在使用EntityFramework,时,我在尝试编译以下代码时收到错误"A lambda expression with a statement body cannot be converted to an expression tree
“:
Obj[] myArray = objects.Select(o =>
{
var someLocalVar = o.someVar;
return new Obj() {
Var1 = someLocalVar,
Var2 = o.var2 };
}).ToArray();
我不知道这个错误是什么意思,最重要的是我不知道如何修复它。有什么帮助吗?
发布于 2011-03-03 18:24:33
objects
是Linq-To-SQL数据库上下文吗?在这种情况下,只能使用=>运算符右侧的简单表达式。原因是,这些表达式不会被执行,但会被转换为SQL,以便对数据库执行。尝尝这个
Arr[] myArray = objects.Select(o => new Obj() {
Var1 = o.someVar,
Var2 = o.var2
}).ToArray();
发布于 2013-02-23 18:04:55
您可以在IEnumerable集合的lamba表达式中使用语句体。试试这个:
Obj[] myArray = objects.AsEnumerable().Select(o =>
{
var someLocalVar = o.someVar;
return new Obj()
{
Var1 = someLocalVar,
Var2 = o.var2
};
}).ToArray();
通知:
使用此方法时要仔细考虑,因为这样,所有查询结果都将存储在内存中,这可能会对其余代码产生不必要的副作用。
发布于 2011-03-03 18:24:11
这意味着您不能在需要将lambda表达式转换为表达式树的地方使用带有“语句体”的lambda表达式(即使用大括号的lambda表达式)(例如,使用linq2sql时就是这种情况)。
https://stackoverflow.com/questions/5179341
复制相似问题