2013-01-22 149 views
2

我相當肯定這是可能的,但我有一些問題得到它的工作。我正在嘗試使用linq僅獲得一層嵌套的簡單對象圖。這是一個結構的例子:如何使用linq對嵌套集合進行排序?

public class City 
{ 
public int CityId { get; set; } 
public string Name { get; set; } 
public List<House> Houses { get; set; } 
} 

public class House 
{ 
public int HouseId { get; set; } 
public int Number { get; set; } 
public int CityId { get; set; } 
} 

所以我想要做的就是讓所有的城市,與他們所有的相關房屋。我試圖讓城市按名稱排序,然後按照數字排序他們的嵌套房屋。我嘗試了一個投影,一個foreach進行排序,並在查詢完成後進行緩慢的迭代。下面是我目前所面對的基本知識,但我不能看到如何訪問嵌套組:

List<City> Cities = db.Cities.Include(c => c.Houses).OrderBy(c => c.Name).ToList(); 

我怎麼也管理由他們Number每個城市Houses排序(不影響爲使城市在)?

+0

http://blogs.msdn.com/b/alexj/archive/2009/02/25/tip-1-sorting-relationships-in-entity-framework.aspx –

回答

-1

試試這個

var cities = (from city in db.Cities 
        orderby city.Name 
        select new { 
         City = city, 
         Houses = city.Houses.OrderBy(c => c.Number) 
        }) 
       .ToList(); 
+0

我不明白你的碼。 _house.CityId == city.CityId_沒有加入。 –

+0

它按「city.Name」設置的結果進行排序,然後按「house.Number」進行排序 –

+0

只有選擇城市才能按所需順序爲您提供房屋。 – juharr

4

會是這樣的工作?

var Cities = 
      (from c in db.Cities 
      orderby c.Name 
      select new 
      { 
       Name = c.Name, 
       Houses = c.Houses.OrderBy(c => c.Number).ToList() 
      } 
     ); 
+0

也許名稱將匿名類型中的第二個屬性重命名爲Houses? – juharr

+0

哎呀...謝謝! –

相關問題