我有一个通用列表,我从另外两个列表中形成。 orderby似乎没有正常工作。 BeOrders首先(按日期排序)然后是BTOrders(按日期排序)。我错过了明显的东西吗?我看不出有什么不妥。
orders = new List<DataLayer.OrderStatusItem>();
orders.AddRange(BeOrders);
orders.AddRange(BTOrders);
orders.OrderBy(z => z.ordered);
答案 0 :(得分:12)
是的,您错过了OrderBy
没有订购就地 - 它返回一个有序的序列:
var inOrder = orders.OrderBy(z => z.ordered);
或(假设orders
的类型为List<...>
:
orders = orders.OrderBy(z => z.ordered).ToList();
请注意,这种“无副作用”的方法在整个LINQ中很普遍 - 没有一个操作符会更改它们被调用的集合;他们将视图返回到某种形式的集合(过滤,投射等)。
如果您要对List<T>
进行排序,可以使用List<T>.Sort
。 (你必须以不同的方式指定排序。)
答案 1 :(得分:7)
OrderBy返回IOrderedEnumerable<T>
,因此您必须将其分配给变量:
orders = orders.OrderBy(z => z.ordered);