gpt4 book ai didi

Linq 结合自定义通用扩展方法构建错误 - 表达式树可能不包含赋值运算符?

转载 作者:行者123 更新时间:2023-12-04 05:57:03 28 4
gpt4 key购买 nike

我制作了一个通用扩展方法,它对对象执行操作并在此之后返回该对象:

    public static T Apply<T>(this T subject, Action<T> action)
{
action(subject);
return subject;
}

我无法在 EntityFramework Linq 查询中使用此扩展方法,因为:

表达式树可能不包含赋值运算符

为什么是这样?

Linq 查询:
var parents = from p in context.Parent
join phr in context.Child on p.key equals phr.parentkey
into pr
select p.Apply(
x => x.Children = //The assignment operator that fails to build...
pr.ToDictionary(y => y.childkey, y => y.childname));

最佳答案

好吧,除了赋值运算符,您如何期望您的 Apply方法要翻译成SQL? Entity Framework 对此一无所知,也无法深入研究不透明的委托(delegate)。

我怀疑您真正需要做的是将要在数据库中执行的位与要在本地执行的位分开:

var dbQuery =  from p in context.Parent
join phr in context.Child on p.key equals phr.parentkey into pr
select new { p, phr };

var localQuery = dbQuery.AsEnumerable()
.Select(pair => /* whatever */);

关于Linq 结合自定义通用扩展方法构建错误 - 表达式树可能不包含赋值运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9397320/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com