这很可能是微不足道的,但是。。。。我有一个相当复杂的linq查询,我把它放在一个IQueryable函数中,我想在整个项目中重用它。但当我在一个选择中使用这个时,我得到了“系统Linq IQueryable`1[LINQPad.User.Orders命令]福(系统.Guid)没有到SQL的翻译“:”(非常简化,以显示我所追求的)
void Main()
{
(from e in Clients
select new {
e.CompanyName,
Orders = Foo(e.Id).Count()
}).Take(20).Dump();
}
IQueryable<Orders> Foo(Guid clientId)
{
return Orders.Where(e => e.ClientId.Equals(clientId));
}
不起作用,但以下功能起作用:
void Main()
{
(from e in Clients
select new {
e.CompanyName,
Orders = Orders.Where(f => f.ClientId.Equals(e.Id)).Count()
}).Take(20).Dump();
}
有没有什么方法可以重写查询而不重写Foo?