2013-06-03 83 views
1

DataRow [] drTest包含System.Data.DataRow,例如,包含10個DataRow's。在每個DataRow內部,我有一個ItemArray,其中包含NameCount。 現在我想根據ItemArray的第二個記錄計數以降序對DataRow [] drTest進行排序。使用LINQ排序DataRow []使用LINQ

實施例:

DataRow[] drTest contains 

At [0] Index - ItemArray[0] - "A" 
      - ItemArray[1] - 5 

At [1] Index - ItemArray[0] - "B" 
      - ItemArray[1] - 7 

我想訂購drTest降序排列,以便drTest [1]應該拿出。

回答

3

這應該給你你在找什麼:

var result = drTest.OrderByDescending(dr => dr[1]); 
1

您可以使用下面的LINQ查詢以按降序排列項數組。

var result = drTest.OrderByDescending(itemArray => itemArray [1]); 

var result = from row in drtest 
      orderby row[1] descending 
      select row; 

欲瞭解更多信息,你可以通過LINQ - Ordering Operators

3

使用LINQ的好方法是使用LINQPad。以下是我編寫和測試的一個快速樣本,以回答您的問題:

var table = new DataTable(); 
table.Columns.Add("Name", typeof(string)); 
table.Columns.Add("Count", typeof(int)); 

table.Rows.Add("A", 5); 
table.Rows.Add("B", 7); 
table.Rows.Add("C", 1); 
table.Rows.Add("D", 8); 
table.Rows.Add("E", 9); 
table.Rows.Add("F", 6); 
table.Rows.Add("G", 3); 
table.Rows.Add("H", 2); 
table.Rows.Add("I", 4); 

var sorted = table.Rows.Cast<DataRow>() 
    .OrderByDescending(row => row[1]); 

// If you are using LINQPad you can test this using the following line: 
sorted.Dump();