2013-12-19 29 views
0

我在C#項目(winform)上工作。c#中的數據表的通用列表如何排序#

在我的項目,我整理這樣的數據表:

dt.DefaultView.Sort = "a ASC, b ASC, c ASC"; 

現在下面的表情,我整理一個通用的清單,但結果是對datatale結果不同。

var newList = oldList.OrderBy(x => x.a).OrderBy(x => x.b).OrderBy(x => x.c).ToList(); 

如何排序我的通用列表像數據表結果? (我想要在通用列表中具有相同的數據表結果)

謝謝。

回答

6

使用ThenBy/ThenByDescending第一OrderBy/OrderByDescending操作後 - 它執行已排序序列的後續排序:

var newList = oldList.OrderBy(x => x.a) 
        .ThenBy(x => x.b) 
        .ThenBy(x => x.c) 
        .ToList(); 

否則你是不同的值,每次重新排序全序列(即您將引入新主要訂購忽略以前的訂購 - 請參閱備註關於MSDN的部分)。並且您最終只會按照提供給OrderBy致電(您的情況屬性c)的價值排序順序。您當前的代碼相當於

dt.DefaultView.Sort = "a ASC"; 
dt.DefaultView.Sort = "b ASC"; 
dt.DefaultView.Sort = "c ASC";