使用LINQ对DataRow []进行排序

时间:2013-06-03 05:08:43

标签: c# linq c#-3.0

DataRow [] drTest包含System.Data.DataRow,比如包含10 DataRow个。在每个DataRow中,我有一个包含NameCount的ItemArray。 现在我想根据ItemArray第二个记录计数按降序对DataRow [] drTest进行排序。

示例:

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 个答案:

答案 0 :(得分:4)

使用LINQPad播放LINQ的好方法。这是我编写的一个快速示例,经过测试可以回答您的问题:

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();

答案 1 :(得分:3)

这应该可以满足您的需求:

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

答案 2 :(得分:2)

您可以使用以下LINQ查询按降序对项目数组进行排序。

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

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

有关详细信息,您可以浏览 LINQ - Ordering Operators