2013-01-22 116 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

哎呀...谢谢! –

相关问题