如何使用linq对嵌套集合进行排序?

时间:2013-01-22 17:40:09

标签: c# linq sql-order-by

我相当确定这是可能的,但是我遇到了一些问题。我试图使用linq获得一个只有1级嵌套的简单对象图。以下是结构示例:

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();

我如何设法按Houses对每个城市Number进行排序(不影响城市所在的顺序)?

2 个答案:

答案 0 :(得分:4)

这样的事情会起作用吗?

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

答案 1 :(得分:-1)

试试这个

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