【发布时间】:2016-01-09 14:42:04
【问题描述】:
所以我正在与一些 LINQ(实体框架)lambda 作斗争,我最终通过将结果存储在变量中来修复它。比如:
IQueryable<object> DoStuff() { return /* some linq query */; }
void Main()
{
var result = DoStuff();
// (_database is DbContext) == true
// Works fine
_database.Table.Where(x => result.Contains(x.Id));
// Throws "LINQ to Entities does not recognize the method '[...] DoStuff()' method, and this method cannot be translated into a store expression."
_database.Table.Where(x => DoStuff().Contains(x.Id));
}
我能够通过将查询存储在一个单独的变量中来解决我的问题(偶然),但我很好奇 为什么 有效?这是延迟执行的事情吗?在此之前,我一直认为这两者对于引用类型是可交换的(方法与中间变量的使用),但显然它们不是。
【问题讨论】:
-
你在打什么?原始代码有什么问题?
-
@YuvalItzchakov 我从引发异常的行开始,不明白为什么。我想我花了两个小时的摆弄和一位同事的帮助才意外地找到了解决方案。
-
投反对票是因为?
标签: c# variables methods lambda