尝试按具有一对多关系的值进行排序 - LINQ查询

时间:2012-01-13 10:04:30

标签: c# asp.net linq entity-framework-4

我一直在用我的好朋友谷歌找到问题的解决方案,这是我在用完之前已经有了

基本上我有3张桌子

开发与Property有1对多的关系(开发可以有很多属性) Property与PropertyRent有一对多的关系(一个属性可以有很多租金)

我遇到的问题是按租赁价值排序,这是我到目前为止所做的:

var developmentListSorted = (from d in ContextEntity.Properties
                             where developments.Contains(d.Development.DevelopmentId)
                             orderby d.PropertyRents.Select(x=>x.PropertyRentValue).OrderBy(x=>x.CompareTo(x))
                             select d.Development).Distinct().ToList();

现在没有OrderBy,我得到了一个很好的未排序列表。我真的需要能够通过PropertyRentValue进行排序。

属性'development'是一个ID的数组。

如果我需要进一步澄清,请告诉我。

非常感谢。

1 个答案:

答案 0 :(得分:2)

我假设ContextEntity.Developments让您可以访问开发

var developmentListSorted =
               from d in ContextEntity.Developments
                  where developments.Contains(d.DevelopmentId)
                  orderby
                    d.Properties.Min(x=>x.PropertyRents.Min(y=>y.PropertyRentValue))
                  select d;

这假设您按最低租金值排序,您可以将Min的出现更改为Max以获取最大值,甚至可以使用Average