c# - "A lambda expression with a statement body cannot be converted to an expression tree"

标签 c# linq entity-framework linq-to-entities

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

我不知道这个错误是什么意思,最重要的是不知道如何修复它。有帮助吗?

最佳答案

objects 是 Linq-To-SQL 数据库上下文吗?在这种情况下,您只能使用 => 运算符右侧的简单表达式。原因是,这些表达式没有被执行,而是被转换为 SQL 以对数据库执行。 试试这个

Arr[] myArray = objects.Select(o => new Obj() { 
    Var1 = o.someVar,
    Var2 = o.var2 
}).ToArray();

关于c# - "A lambda expression with a statement body cannot be converted to an expression tree",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5179341/

相关文章:

c# - 创建完整的只读对象列表的最佳方法

c# - 在调用方法中模拟局部变量

c# - 如何使用 Linq "NOT IN"

linq - 无法解析属性(复杂属性)

Linq ToDictionary 返回匿名类型

c# - 实体对象不能被 IEntityChangeTracker 的多个实例引用

linq - Entity Framework 中多对多关系的计数

c# - 使用 MySQL 和 EntityFramework 的 DbGeography

c# - 如何根据元素的位置使用 Linq 重命名数据?

c# - 将 UNC 路径与凭据一起使用