C# 泛型列表中的Orderby

C# 泛型列表中的Orderby,c#,generic-list,C#,Generic List,我有一个通用列表,它是由另外两个列表组成的。orderby似乎工作不正常。BeOrders先到(按日期排序),然后BTOrders(按日期排序)。我错过了什么明显的东西吗?我看不出有什么不对劲 orders = new List<DataLayer.OrderStatusItem>(); orders.AddRange(BeOrders); orders.AddRange(BTOrders); orders.OrderBy(z => z.ordered); orders=n

我有一个通用列表,它是由另外两个列表组成的。orderby似乎工作不正常。BeOrders先到(按日期排序),然后BTOrders(按日期排序)。我错过了什么明显的东西吗?我看不出有什么不对劲

orders = new List<DataLayer.OrderStatusItem>();
orders.AddRange(BeOrders);
orders.AddRange(BTOrders);

orders.OrderBy(z => z.ordered);
orders=newlist();
orders.AddRange(BeOrders);
orders.AddRange(BTOrders);
orders.OrderBy(z=>z.ordered);

OrderBy返回一个
iorderenumerable
,因此您必须将其分配给一个变量:

orders = orders.OrderBy(z => z.ordered);

是的,您遗漏了
OrderBy
未按适当顺序排序-它返回一个已排序的序列:

var inOrder = orders.OrderBy(z => z.ordered);
或者(假设
订单
类型为
列表

请注意,这种“无副作用”的方法在整个LINQ中都很普遍-没有任何操作符更改调用它们的集合;它们返回某种形式(过滤、投影等)的集合视图

如果您想在适当的位置对
列表进行排序,可以使用(但必须以不同的方式指定排序)

orders = orders.OrderBy(z => z.ordered).ToList();