У меня вопрос, как я могу построить лямбду c=> c.docdate >= DateTime.Today
методом Expression.GreaterThanOrEqual.
Спасибо
ps:
Цель, которую я делаю, заключается в том, что я думаю, что могу применить такой способ к любому условию запроса, например, int, decimal,.Затем я могу написать любое условие запроса универсальным методом и связать их вместе любым способом.
, например:
У меня есть класс, подобный приведенному ниже:
public class DataRangeT<T> : IRangeValue<T>
where T : struct
{
Nullable<T> _high;
Nullable<T> _low;
public Nullable<T> High { get { return _high; } set { _high = value; } }
public Nullable<T> Low { get { return _low; } set { _low = value; } }
}
BeacuseМаксимум и минимум - Nullable, поэтому я должен построить свой запрос, как показано ниже
public static Expression<Func<T, bool>> RangeCompare<T>(Expression<Func<T, K>> selector, IRangeValue<K> patten)
{
Expression<Func<T, bool>> predicate = f=>true;
if (patten.High.HasValue)
{
predicate = predicate.And<T>(/* LowThanOrEqual */);
}
if (patten.Low.HasValue)
{
predicate = predicate.And<T>(/* GreaterThanOrEqual */);
}
return predicate;
}
Поскольку оператор> = не поддерживается в Nullable, тогда я думаю, что я должен использовать GreaterThanOrEqual.
Методpredicate.And<T>()
- это метод справки, который я пишу для динамического объединения запросов.