2011-09-02 48 views
3

我有一个通用列表,我从其他两个列表中形成。 orderby似乎没有正常工作。 BeOrders首先(按日期排序),然后是BTOrders(按日期排序)。我错过了明显的东西吗?我看不到任何错误。Orderby在通用列表

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

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

回答

12

是的,你已经错过了OrderBy不下令就地- 它回报有序序列:

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

或(假设ordersList<...>类型:

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

注意,这个“无副作用”的做法在整个LINQ是普遍的 - 没有一个运营商改变他们呼吁收集;他们将视图返回到某种形式的集合(过滤,投影等)。

如果您想对List<T>进行排序,则可以使用List<T>.Sort。 (但是,您必须以不同的方式指定排序。)

7

排序依据返回IOrderedEnumerable<T>,所以你必须把它分配给一个变量:

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