实体框架4 / Linq:如何OrderBy()一个分层实体?

时间:2010-11-16 05:16:52

标签: linq linq-to-entities entity-framework-4

我有一个由几个实体关系构成的ViewModel:

Products[].Prices[].Others[].myField

如何通过嵌套的myField订购产品[]?当我执行Where子句时,它就像这样:

Products.Where( p => p.Prices.Any( q => q.Others.Any( r => r.myField == 4)));

因此,如果我想通过myField进行Products.OrderBy()和订购,那么Expression会是什么样子?

Products.OrderBy( p => p.Prices.SelectMany( ??

2 个答案:

答案 0 :(得分:1)

由于您的产品价格低于几个,因此您需要选择要排序的价格,例如

Products.OrderBy( p => p.Prices.First().Others.First().myField )

或者如果您想以最高价格订购

Products.OrderBy( p => p.Prices.OrderByDescending(price => price.Value).First().Others.First().myField )

答案 1 :(得分:1)

我假设价格有一个字段Value,它是主要类型或可比较类型,所以你有:

Products.OrderBy( p => p.Prices.Average(x=>x.Value))

Products.OrderBy( p => p.Prices.Min(x=>x.Value))