当我尝试使用可查询列表的动态查询时,仅对某些Linq函数有例外,如下所示。
这很好(也Select(...)
):
string query = @"@0.Where(TControl==""skip"")";
var expression = new ExpressionParser(null, query, new[] { list.AsQueryable() }, null).Parse(null);
var result = list.AsQueryable().Provider.CreateQuery(expression);
这会引发异常(也是First(...)
或Last(...)
):
string query = @"@0.FirstOrDefault(TControl==""skip"")";
var expression = new ExpressionParser(null, query, new[] { list.AsQueryable() }, null).Parse(null);
var result = list.AsQueryable().Provider.CreateQuery(expression);
在最后一行抛出:System.ArgumentException: 'Argument expression is not valid'
我想念什么?我怀疑问题可能是返回类型-第一个是可枚举的,第二个是元素类型。如果是这样,我如何使它们同时工作?