C# 展平LINQ子选择,使1..n成为一行

C# 展平LINQ子选择,使1..n成为一行,c#,linq,C#,Linq,我有一个订单,其中包含链接到电台设置的电台列表: public class Order { public int Id { get; set; } public string Name { get; set; } .. .. public List<OrderStation> OrderStations { get; set; } } public class OrderStation { public int Id { get; s

我有一个订单,其中包含链接到电台设置的电台列表:

public class Order
{
    public int Id { get; set; }
    public string Name { get; set; }
    ..
    ..
    public List<OrderStation> OrderStations { get; set; }
}

public class OrderStation
{
    public int Id { get; set; }
    public int Status { get; set; }
    ..
    ..
    public Order Order { get; set; }
    public Station Station { get; set; }
}  

public class Station
{
    public int Id { get; set; }
    public int DisplayOrder { get; set; }
    ..
    ..
}
其中OrderStation按OrderStation.Station.DisplayOrder排序


我不习惯LINQ,我完全不习惯这样把sub select展平

使用可枚举的.OrderBy。如果集合“可以是任意数量的
OrderStations
”,则不应在匿名类型中为每个
状态使用固定属性。改为使用有序集合的属性:

var q = new
{
    order.Name,
    OrderedStatuses = order.OrderStations
        .OrderBy(os => os.Station.DisplayOrder)
        .ToList()
};

您应该显示一个带有单个顺序(初始化它的C代码)和所需结果的示例。为了使集合的集合平坦化,您可以尝试使用
SelectMany
随着时间的推移可以添加更多的站…如果您提供预期的功能原型,这将有所帮助
var q = new
{
    order.Name,
    OrderedStatuses = order.OrderStations
        .OrderBy(os => os.Station.DisplayOrder)
        .ToList()
};