Linq与自定义泛型扩展方法结合生成错误-表达式树可能不包含赋值运算符



我制作了一个通用的扩展方法,它对对象执行操作,然后返回对象:

    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?实体框架对此一无所知,也无法深入研究不透明的委托。

我怀疑你真正需要做的是将数据库中要做的比特与本地要做的字节分开:

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 */);

最新更新