基本上,我正在寻找一种在 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 个金额,并且我还没有在网上找到任何显示我需要的示例的内容。
谢谢
要获取每个组中的前 X 个项目,您需要先对所有项目进行分组。 对项目进行分组后Take
允许您从该序列中获取第一个最多 X 个项目:
var query = data.GroupBy(item => item.Name)
.SelectMany(group => group.Take(3));