C# LINQ 按对象排序列表属性,选择“X 金额”

本文关键字:选择 金额 属性 LINQ 对象 排序 列表 | 更新日期: 2023-09-27 18:30:35

基本上,我正在寻找一种在 LINQ 中选择列表中第一个(假设 3 个)分组对象的方法。

例如,列表可能包含:

{"AAA"

, "AAA", "AAA", "AAA", "BBB", "BBB", "CCC", "CCC", "CCC", "CCC", "CCC", "CCC", "DD", "EE", "EE"}

我想返回的列表是:

{"AAA", "AAA", "AAA

", "BBB", "BBB", "CCC", "CCC", "CCC", "CCC", "DD", "EE", "EE"}这意味着它将返回分组元素的前 3 个

(如果它没有 3 个元素,它将返回尽可能多的元素 1,2)

到目前为止,我所拥有的是:

List<Object> sorted = mainList.OrderBy(x => x.NAME).ToList();

它只返回上面的第一个列表。

我想我需要使用某种形式的

 .Select() or .SelectMany()

但是我不太确定如何指定获取每个组的前 X 个金额,并且我还没有在网上找到任何显示我需要的示例的内容。

谢谢

C# LINQ 按对象排序列表属性,选择“X 金额”

要获取每个组中的前 X 个项目,您需要先对所有项目进行分组。 对项目进行分组后Take允许您从该序列中获取第一个最多 X 个项目:

var query = data.GroupBy(item => item.Name)
    .SelectMany(group => group.Take(3));