我有一个这样的数据表:
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
如果你能帮助我处理我的问题,我将非常感谢你。 非常感谢
答案 0 :(得分:0)
您不需要这里的小组,只需要OrderBy
: -
var result = data.OrderByDescending(x => x.F1).ThenByDescending(x => x.F2);
答案 1 :(得分:0)
也可能像:
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
});
});
虽然相对于上面的答案,这看起来相当复杂。
答案 2 :(得分:0)
按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
答案 3 :(得分:0)
试试这个 -
第一组
var x = t.GroupBy(gp => gp.Name).OrderBy(group => group.Key).Select(group => Tuple.Create(group.Key,group.Count()) );
然后排序
x.OrderBy(gr => gr.Item2);