2012-01-13 50 views
0

我一直用我的好朋友谷歌来查找问题的解决方案,这是据我已经得到运行的想法之前试图通过具有一对多的关系价值订购 - LINQ查询

基本上我有3个表

开发与物业1到许多关系(发展可以有很多属性) 物业有PropertyRent 1一对多的关系(一个属性可以有很多的租金)

的我遇到的问题是租赁价值排序,这是我迄今为止:

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数组。

请让我知道,如果我需要进一步澄清这一点。

非常感谢。

+0

我认为你试图做的查询没有任何意义,因为你想在最后得到明显的结果 - 如果你想通过两级深入的一对多关系进行排序,那么这将不起作用。 – 2012-01-13 10:19:01

+0

摆脱了独特的,并得到同样的问题... – Matt 2012-01-13 10:39:39

回答

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都occurances改变Max得到最大值或甚至使用Average

+0

完美 - 作品魅力 - 谢谢! – Matt 2012-01-13 11:09:14