2014-11-14 79 views
1

基本上我正在寻找一种方式在LINQ中选择第一个,让我们说3,在列表中分组对象。C#LINQ按对象属性排序列表,选择X Amount

例如,一个列表可能包含:

{ “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个元素,它会返回很多t帽子它可以1,2)

我至今是:

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

刚刚返回上面的第一个列表。

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

.Select() or .SelectMany() 

但我不太清楚如何指定让每个组的第一个X量,我没有发现任何东西在网上,显示的我需要的例子。

感谢

回答

5

要获得各组中的第一个X的项目,你需要把所有项目的第一。你分组的项目后Take允许您从该序列得到的第一个先进-X项目:

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

这正是我需要的,谢谢! – sl133 2014-11-14 21:12:27