按对象属性的C#LINQ Order List,选择X Amount

时间:2014-11-14 21:05:38

标签: c# linq sorting

基本上我在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数量而且我没有在网上找到任何显示我需要的例子。

由于

1 个答案:

答案 0 :(得分:5)

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

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