2014-11-14 78 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