基本上我在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”,“DD”,“EE”,“EE”}
意味着它将返回分组元素的前3个(如果它没有3个元素,那么它将返回很多,它可以1,2)
到目前为止我所拥有的是:
List<Object> sorted = mainList.OrderBy(x => x.NAME).ToList();
只返回上面的第一个列表。
我想我需要使用某种形式的
.Select() or .SelectMany()
但是我不太确定如何指定获得每个组的第一个X数量而且我没有在网上找到任何显示我需要的例子。
由于
答案 0 :(得分:5)
要获取每个组中的前X个项目,您需要先对所有项目进行分组。在您对项目Take
进行分组后,您可以从该序列中获取第一个最新的X项:
var query = data.GroupBy(item => item.Name)
.SelectMany(group => group.Take(3));