我有一个如下所示的Func:
Func<Foo, bool> IsSuperhero = x => x.WearsUnderpantsOutsideTrousers;
我可以像这样查询IEnumerables:
IEnumerable<Foo> foos = GetAllMyFoos();
var superFoos = foos.Where(IsSuperhero);
但当我尝试将相同的 Func 提供给 IQueryable 的 Where 方法时,我收到以下错误:
'无法将源类型 System.Collections.Generic.IEnumerable 转换为 System.Linq.IQueryable.'
发生了什么?我如何定义一个可以同时作为 IEnumerable 和 IQueryable 规范的 Func?
IQueryable
是为像 LINQ to SQL 这样的事情而设计的,需要找出委托的作用。这在普通的委托中是不可能的,因此它们必须采取一个Expression<T>
。 - SLaks