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