2016-03-21 4 views
0

Guten Tag alle.Suchen Sie nach Duplikaten im Array mit benutzerdefinierten Typ mit Linq in C#

zum Beispiel sagen, Let Ich habe einen benutzerdefinierten Typ:

public struct Group { 
    public string GroupName; 
    public int someInt; 
} 

Und sagen, ich habe eine Reihe von dieser Art:

public Group[] Groups; 

ich überprüfen möchten, ob Groups zwei oder mehr Group Artikel mit dem gleichen GroupName. In Pseudo-Code würde es aussehen:

if (Groups has two or more Group items with the same name) { 
    // we have a problem 
} 

Wir freuen uns, wenn jemand hilft. Danke im Voraus!

+2

Sie sollten die 'IComparable' Schnittstelle überprüfen: https://msdn.microsoft.com/en-us/library/system.icomparable%28v=vs.110%29.aspx?f= 255 & MSPPError = -2147217396 ** oder ** https://msdn.microsoft.com/en-us/library/4d7sx9hd(v=vs.110).aspx –

Antwort

1
if(Groups.GroupBy(e=>e.GroupName).Count() < Groups.Count) 
{ 
    // we have a problem 
} 
+0

Danke für deine Antwort, es hat funktioniert! Hab einen schönen Tag, ich liebe dich :) – Tayab

+0

Gern geschehen – serdar

3

Sie können dies tun:

if(Groups.GroupBy(e=>e.GroupName).Count()>1) 
{ 
//... 
} 
+0

Ich dachte wirklich, das würde funktionieren, aber egal wie viele Group Elemente in Gruppen mit der gleichen GroupName es immer gleich 1. Bitte überprüfen Sie Ihren Code und zurück zu mir :( – Tayab

+0

Könnten Sie zu Ihrer Frage eine Sammlung von Daten hinzufügen, die Sie zum Testen verwenden? – octavioccl

+1

@Tayab, glaube mir oder nicht, aber das Stück Code sollte auch funktionieren! –

0

Ich denke, es könnte eine bessere Lösung sein, aber können Sie dies versuchen.

var results = (from p in Groups 
       group p by p.GroupName into g 
       select new { GroupName = g.Key, Total = g.Count 
       }).Where(c=>c.Total>1).ToList(); 

If(results.Count()>1) 
{ 

} 
Verwandte Themen