2013-06-03 86 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();