【发布时间】:2014-11-21 02:33:17
【问题描述】:
我正在使用 Dynamic Linq,今天我想构建一个稍微复杂一点的嵌套查询:
"Composition
.Where(((ExpirationDate > DateTime.UtcNow.Date) && (ExpirationDate.Year != 9999)))
.OrderBy(\"ExpirationDate ASC\")
.Select(ExpirationDate)
.FirstOrDefault() == @0"
(中断只是为了这篇文章的可读性,而不是真正存在于代码中)
查询由一个字符串变量保存并传递给这个:
private static Func<IQueryable<T>, object, IQueryable<T>> CreateWhereExpression<T>(string whereClause) where T : class
{
return (q, o) => q.Where(whereClause, o);
}
这很高兴创建了 Where 表达式。 (请注意 whereClause 包含“Composition.Where....”上方的确切字符串) 但是一到执行的时间,它就会报错:
不存在适用的聚合方法“OrderBy”
所以我的问题是,我做错了什么?如何让嵌套的 OrderBy 工作?
【问题讨论】:
-
您是否要解析
LINQ?动态 LINQ 不支持解析自己的语法。 -
是的,我正在尝试让 Dynamic Linq 将字符串解析为 Linq 查询。我也尝试过使用 Linq 语法 '.OrderBy(ExpirationDate)' 但我得到了同样的错误。我正在尝试完成与此类似的事情:stackoverflow.com/questions/10314708/… 但是使用 orderby 查询。
标签: c# linq dynamic-linq