首页 > 后端开发 > C++ > 为什么带有语句主体的 Lambda 表达式会在实体框架中导致错误?

为什么带有语句主体的 Lambda 表达式会在实体框架中导致错误?

DDD
发布: 2024-12-31 19:42:09
原创
931 人浏览过

Why Does My Lambda Expression with a Statement Body Cause an Error in Entity Framework?

EntityFramework 中带有语句主体错误的 Lambda 表达式

在 EntityFramework 中,使用 lambda 表达式时遇到的常见错误是:

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

当 lambda 表达式包含语句而不是表达式时,会发生此错误。在 EntityFramework 中,lambda 表达式用于指定查询中的条件或转换。但是,表达式不能包含修改变量或执行操作的语句。

示例:

以下代码片段会触发错误:

Obj[] myArray = objects.Select(o =>
{
    var someLocalVar = o.someVar;

    return new Obj() { 
    Var1 = someLocalVar,
    Var2 = o.var2 };
}).ToArray();
登录后复制

说明:

在此示例中,lambda 表达式使用在返回对象之前将值赋给局部变量 someLocalVar 的语句体。但是,此语句主体无法转换为表达式树以供 EntityFramework 执行。

解决方案:

要解决此错误,请重写 lambda 表达式,使其仅包含表达式。在这种情况下,这意味着删除语句主体并直接构造 Obj 对象:

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

现在 lambda 表达式仅由一个表达式组成,可以转换为表达式树以供 EntityFramework 处理。

以上是为什么带有语句主体的 Lambda 表达式会在实体框架中导致错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板