基本上,我在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个值,而且我还没有在网上找到任何可以显示我所需要的例子的东西。

谢谢

最佳答案

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

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

关于c# - 按对象属性的C#LINQ订单列表,选择X金额,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26938849/

10-10 18:19
查看更多