Сравните два универсальных типа в linq к sql

Swift 4:

Попытка показать значение в метке без дополнительного () слова.

здесь x является значением Int с использованием.

let str:String = String(x ?? 0)
1
задан user2155362 16 January 2019 в 04:11
поделиться

1 ответ

Если вы работаете с LINQ to Objects, стандартным способом обработки общих сравнений является использование класса Comparer.

public static Expression<Func<T, bool>> RangeCompare<T, K>(Func<T, K> selector, IRangeValue<K> patten) where K : struct {
    var cmp = Comparer<K>.Default;

    Expression<Func<T, bool>> predicate = PredicateBuilder.True<T>();
    if (patten.GetHigh().HasValue)
        predicate = predicate.And<T>(s => cmp.Compare(selector(s), patten.GetHigh().Value) <= 0);
    if (patten.GetLow().HasValue)
        predicate = predicate.And<T>(s => cmp.Compare(selector(s), patten.GetLow().Value) >= 0);

    return predicate;
}

Примечание: я изменил метод для получения Func, поэтому вам не нужен вызов Compile.

0
ответ дан NetMage 16 January 2019 в 04:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: