Linq异常:表达式必须是MemberExpression

3

我正在处理一个 Linq 查询,并尝试按照 Mutilevel include in C# Linq 的建议,包含多层实体。

因此,我编写了以下查询:

 query.Include(u => u.Stops.Select(d => d.Address).Select(c => c.City));

查询条件是

IQueryable<SomeEntity> query

我遇到了异常:

表达式必须是一个 MemberExpression。

我的实体截图如下:enter image description here。请帮忙解决,谢谢。


1
展示你的 SomeEntityStopAddress 实体。不清楚这些导航属性属于哪个实体。 - Ladislav Mrnka
查看文档:http://msdn.microsoft.com/en-us/library/gg671236(v=vs.103).aspx。似乎你需要嵌套`Select()`,而不是链式调用它们。甚至有一个示例可以帮助你完成你想要做的事情。 - millimoose
Ladislav,我已经上传了实体的截图,请确认。 - Manvinder
Inerdial,感谢您提供的链接,非常有趣。最后一个示例与我的问题有些联系,但唯一的问题是嵌套的Select仅适用于导航属性为集合的情况,而这不是我的情况。在倒数第二个示例中,我遇到了相同的异常。 - Manvinder
1个回答

0

这个 Include 的重载(扩展?)不支持通过方法链进行包含。但是,它支持嵌套包含表达式:

query.Include(u => u.Stops.Select(d => d.Address.City));

// this would work too:
categories.Include(u => u.SubCategories.Select(c => c.Items.Select(i => i.Manufacturer)));
// equals
categories.Include("SubCategories.Items.Manufacturer");

Select 部分仅用于访问集合类型属性项的成员。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接