讓我們假設一個具有兩個屬性的物件串列 -int Val1和double Val2. 我想按 分組Val1,然后按分組排序Val2。
示例串列:
Val1 Val2
1 2.4
2 1.3
1 1.9
2 5.1
正確分組和排序的串列如下所示:
Val1 Val2
1 1.9
1 2.4
2 1.3
2 5.1
我首先想到的是使用 LINQ。
list = list.GroupBy(x => x.Val1).SelectMany(x => x).OrderBy(x => x.Val2).ToList();
但結果不正確 -OrderBy完全覆寫GroupBy。
具有不同方法順序的方法幾乎可以作業:
list = list.OrderBy(x => x.Val2).GroupBy(x => x.Val1).SelectMany(x => x).ToList();
但是Val1是相反的 - 從較高的值到較低的值,而Val2正確排序。不能只反轉串列,因為它會反轉Val2.
uj5u.com熱心網友回復:
我想按 Val1 對其進行分組,然后按 Val2 在組內排序。
我想你想要別的東西:你想按順序排列Val1串列Val2:
list = list
.OrderBy(x => x.Val1)
.ThenBy(x => x.Val2)
.ToList();
如果您只想訂購,那么創建組然后將它們展平是沒有意義的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/532860.html
標籤:C#。网林克
