2016-08-09 15 views
3

Lassen Sie uns sagen, ich habe diese Liste in einem Feld namens ‚Array‘:Wie Liste verengen, um eine maximale Anzahl der gleichen Elemente in C#

[0]a.1 
[1]b.1 
[2]c.1 
[3]d.1 
[4]e.2 
[5]f.2 
[6]g.2 
[7]h.3 

ich es verengen wollen mit C# auf eine Liste mit maximal zwei gleiche Zahlen in einer Liste, so würde es so aussehen:

[0]a.1 
[1]b.1 
[2]e.2 
[3]f.2 
[4]h.3 

I 'GroupBy' zu verwenden versuchte:

var Groups = array.GroupBy(i => i); 
var Result = Groups.SelectMany(iGroup => iGroup.Take(2)).ToArray(); 

aber ich bin nicht sicher, wie nur nehmen, was nach dem Punkt in Betracht ist und nicht der ganze Artikel

Antwort

6

Ich bin nicht sicher, wie man nur nehmen, was in Betracht nach dem Punkt ist und nicht der ganze Artikel

Wenn die Punkt ist garantiert vorhanden sein, auf dem Punkt geteilt, und das zweite Element nehmen:

var Groups = array.GroupBy(i => i.Split('.')[1]); 

der Rest des Codes, mit SelectMany und Take(2), ist richtig.

Verwandte Themen