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

C# 如何使用linq对嵌套集合进行排序?,c#,linq,sql-order-by,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;

我相当肯定这是可能的,但我有一些问题,使其工作。我正在尝试使用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; }
}
公共级城市
{
public int CityId{get;set;}
公共字符串名称{get;set;}
公共列表屋{get;set;}
}
公屋
{
public int HouseId{get;set;}
公共整数{get;set;}
public int CityId{get;set;}
}
所以我要做的是得到所有的城市,以及它们所有相关的房子。我试图让城市按名称排序,然后他们的巢屋按数字排序。我尝试了投影、foreach排序,以及在查询完成后的缓慢迭代。以下是我目前掌握的基本知识,但我看不到如何访问嵌套集:

List<City> Cities = db.Cities.Include(c => c.Houses).OrderBy(c => c.Name).ToList();
List Cities=db.Cities.Include(c=>c.Houses.OrderBy(c=>c.Name.ToList();
我怎样才能按照每个城市的
编号对每个城市的
房屋
进行排序(而不影响城市的顺序)?

试试这个

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

你喜欢这个工作吗

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

我不懂你的密码。没有house.CityId==city.CityId的连接。它根据
city.Name
,然后根据
house.Number
设置的结果进行排序。仅选择城市并不会按照您想要的顺序为您提供房屋。但是,由于您不使用house的值,因此house.Number上的排序将丢失。如果您使用的是实体框架(或类似的)您不需要进行任何显式联接。
city.Houses
House
实体的集合,其中
House.CityId==city.CityId
。是否可以将匿名类型中的第二个属性重命名为Houses?