将.Net中的列表排序为一个字段,然后排序另一个字段

Chr*_*ris 2 c# linq sorting

我有基于它们的一些属性需要排序的对象列表.这适用于按一个字段排序:

reportDataRows.Sort((x, y) => x["Comment1"].CompareTo(y["Comment1"]));
foreach (var row in reportDataRows) {
   ...
}
Run Code Online (Sandbox Code Playgroud)

我在这里看到很多例子只有一个字段.但是,我如何按一个字段排序,然后另一个字段?或者许多字段列表如何?似乎使用LINQ orderby然后才是最好的,但我不知道如何使用它.

对于参数,这样的东西支持任何数量的字段排序将很好:

var sortBy = new List<string>(){"Comment1","Time"};
Run Code Online (Sandbox Code Playgroud)

我不想在我的每个应用程序中编写代码来执行此操作.我计划将此排序代码移动到保存数据的类,以便它可以执行更高级的操作,例如使用参数列表并隐式识别该字段是日期并将其排序为日期而不是字符串.reportDataRow对象包含具有此信息的字段,因此我不必进行任何混乱的检查以确定该字段是否应该是日期.

Kir*_*oll 7

是的,我认为使用OrderBy和更有意义ThenBy:

foreach (var row in reportDataRows.OrderBy(x => x["Comment1"]).ThenBy(x => x["Comment2"]) 
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

这假设您要订购的另一件事是"Comment2".