我有一个通用列表,我从其他两个列表中形成。 orderby似乎没有正常工作。 BeOrders首先(按日期排序),然后是BTOrders(按日期排序)。我错过了明显的东西吗?我看不到任何错误。Orderby在通用列表
orders = new List<DataLayer.OrderStatusItem>();
orders.AddRange(BeOrders);
orders.AddRange(BTOrders);
orders.OrderBy(z => z.ordered);
我有一个通用列表,我从其他两个列表中形成。 orderby似乎没有正常工作。 BeOrders首先(按日期排序),然后是BTOrders(按日期排序)。我错过了明显的东西吗?我看不到任何错误。Orderby在通用列表
orders = new List<DataLayer.OrderStatusItem>();
orders.AddRange(BeOrders);
orders.AddRange(BTOrders);
orders.OrderBy(z => z.ordered);
是的,你已经错过了OrderBy
不下令就地- 它回报有序序列:
var inOrder = orders.OrderBy(z => z.ordered);
或(假设orders
是List<...>
类型:
orders = orders.OrderBy(z => z.ordered).ToList();
注意,这个“无副作用”的做法在整个LINQ是普遍的 - 没有一个运营商改变他们呼吁收集;他们将视图返回到某种形式的集合(过滤,投影等)。
如果您想对List<T>
进行排序,则可以使用List<T>.Sort
。 (但是,您必须以不同的方式指定排序。)
排序依据返回IOrderedEnumerable<T>
,所以你必须把它分配给一个变量:
orders = orders.OrderBy(z => z.ordered);