LINQ 필터 변환 식을 적용하십시오
-
21-12-2019 - |
문제
나는 멋진 LINQ 도전을 가지고 있습니다.필터링 기능을 사용하여 날짜에 일부 데이터를 필터링하고 싶습니다.다음과 같이 작동해야합니다 :
ApplyDateFilterEx(query,null, DateTime.Today, s => s.CreatedDate);
.
오늘날까지 모든 '선적'이 모두 반환되도록 쿼리를 필터링해야합니다.쿼리 개체는 iQuelyable이며 전체 쿼리는 EF5로 평가되어야하므로 SQL로 변환해야합니다.
이것은 지금까지 가지고있는 것입니다 (컴파일되지 않음) :
private static IQueryable<Shipment> ApplyDateFilterEx(IQueryable<Shipment> query, DateTime? minDate, DateTime? maxDate, Expression<Func<Shipment, DateTime?>> dateMember)
{
if (minDate != null)
{
//convert func to expression so EF understands
Expression<Func<Shipment, bool>> where = x => minDate <= dateMember(x);
query = query.Where(where);
}
if (maxDate != null)
{
Expression<Func<Shipment, bool>> where = x => dateMember(x) <= maxDate;
query = query.Where(where);
}
return query;
}
.
식을=> DateTime을 변환하고 싶습니다.평가할 S=> BOOL.어떻게 일할 수 있습니까?
읽어 주셔서 감사합니다. Martijn
udpate : 나는 이것으로 끝내었다 (rdvanbuuren 덕분에)
var predicate = Expression.Lambda<Func<Shipment, bool>>(
Expression.GreaterThanOrEqual(
selector.Body,
Expression.Constant(dateFilter.MinDate, typeof (DateTime?))
), selector.Parameters);
. 해결책
봐 표현식 매개 변수가있는 방법을 구현하는 방법 C # / 나 P>
나는 그것이 당신이 필요로하는 것이 정확히 그렇지 만, expression.greaterthanorequal 또는 expression.Ressthanorequal.행운을 빌어!
제휴하지 않습니다 StackOverflow