“带有语句主体的lambda表达式无法转换为表达式树”

在使用EntityFrameworkA 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();

我不知道该错误的含义以及最重要的解决方法。有什么帮助吗?


青春有我
浏览 1200回答 3
3回答

慕桂英546537

您可以在lamba表达式中将语句主体用于IEnumerable集合。试试这个:Obj[] myArray = objects.AsEnumerable().Select(o =>{    var someLocalVar = o.someVar;    return new Obj()     {         Var1 = someLocalVar,        Var2 = o.var2     };}).ToArray();注意:使用此方法时请仔细考虑,因为这样,您会将所有查询结果存储在内存中,这可能会对其余代码产生不良影响。

米脂

在不了解您在做什么的情况下(Linq2Objects,Linq2Entities,Linq2Sql?),这应该可以使它工作:Arr[] myArray = objects.AsEnumerable().Select(o => {    var someLocalVar = o.someVar;    return new Obj() {         Var1 = someLocalVar,        Var2 = o.var2     }; }).ToArray();
打开App,查看更多内容
随时随地看视频慕课网APP