所以我试图创建一个表达式,在通过表达式指定的特定日期进行日期时间比较。但是我一直得到错误LINQ to Entities无法识别方法' get_Day()'方法
获取日但是能够与Entity Framework一起使用,您可以访问该属性并在正常构建lamba时进行比较。
通常它会遵循类似
的sqlWHERE ((DATEPART (day, [Project6].[C1])) >= (DATEPART (day, '4/28/2015 12:00:00 AM')))
这是我的功能有谁知道我能做些什么来解决这个错误?
public IQueryable<T> SetDateCompare<T>(IQueryable<T> OriginalQuery, Expression<Func<T, DateTime>> getDateFunc, DateTime ComparisonDate, bool isGreaterThan = true)
where T : class
{
if (isGreaterThan)
{
Expression left = Expression.Call(getDateFunc.Body, typeof(DateTime).GetMethod("get_Day"));
Expression right = Expression.Constant(ComparisonDate.Day, typeof(int));
Expression res = Expression.GreaterThan(left, right);
var whereCallLambda = Expression.Lambda<Func<T, bool>>(Expression.GreaterThanOrEqual(left, right), getDateFunc.Parameters.Single());
MethodCallExpression whereCall = Expression.Call(typeof(Queryable),
"Where",
new Type[] { OriginalQuery.ElementType },
OriginalQuery.Expression,
whereCallLambda);
OriginalQuery = OriginalQuery.Provider.CreateQuery<T>(whereCall);
}
return OriginalQuery;
}