使用linq对组进行分组和排序
本文关键字:排序 linq 使用 | 更新日期: 2023-09-27 18:10:43
我有一个这样的数据表:
F1 F2 F3
---------------
20 942 50
60 942 330
20 941 205
20 943 250
60 941 120
我想有我的数据分组到集群具有相同的F1。而在每一组中,我想先按F3然后按F2排序。
结果数据必须像这样:
F1 F2 F3
---------------
60 942 330
60 941 120
20 943 250
20 942 50
20 941 115
如果你能帮我解决我的问题,我将不胜感激。谢谢
也可以是:
var groups = dataset.GroupBy(item => item.F1);
foreach (var group in groups)
foreach (var entry in group.OrderBy(g => g.F3).ThenBy(g => g.F2))
.. do stuff ...
或者如果你不想得到一个单一的数据集,你可以使用:
var groupedDataset =
dataset
.GroupBy(item => item.F1).
.SelectMany(group => {
var subSet = group.OrderBy(e => e.F3).ThenBy(e => e.F2);
return subSet.Select(s => {
F1 = group.Key,
F2 = s.F2,
F3 = s.F3
});
});
在这里你不需要组,你只需要OrderBy
:-
var result = data.OrderByDescending(x => x.F1).ThenByDescending(x => x.F2);
工作小提琴。
按3列排序就可以了:
data.OrderByDescending(x => x.F1).ThenByDescending(x => x.F3).ThenByDescending(x => x.F2);
表示这个输入
F1 F2 F3
---------------
20 942 50
60 942 120
20 941 205
20 943 250
60 941 330
会给
F1 F2 F3
60 942 330
60 941 120
20 943 250
20 942 250
20 941 115
试试这个-
第一组
var x = t.GroupBy(gp => gp. name)。order (group => group. key)。选择(group => Tuple.Create(group))。键,group.Count ()));
然后排序
x。order (gr => gr. item2);