使用LINQ排序DataRow[]

本文关键字:DataRow 排序 LINQ 使用 | 更新日期: 2023-09-27 18:16:36

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

的例子:

DataRow[] drTest contains 
At [0] Index - ItemArray[0] - "A"
             - ItemArray[1] - 5
At [1] Index - ItemArray[0] - "B"
             - ItemArray[1] - 7

我想按降序排列drTest,这样drTest[1]就会出现

使用LINQ排序DataRow[]

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

这应该会给你你正在寻找的:

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

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

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

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

有关更多信息,请参见LINQ -排序操作符