Wählen Sie unter Verwendung von LINQ in C # eindeutige Werte aus einer Liste aus.
Habe ich eine Sammlung von Employee -
Class Employee
{
empName
empID
empLoc
empPL
empShift
}
Meine Liste enthält
empName,empID,empLoc,empPL,empShift
E1,1,L1,EPL1,S1
E2,2,L2,EPL2,S2
E3,3,L3,EPL3,S3
E4,4,L1,EPL1,S1
E5,5,L5,EPL5,S5
E6,6,L2,EPL2,S2
Ich brauchen, um die Mitarbeiter mit unterschiedlichen Werten
empLoc,empPL,empShift.
Gibt es irgendeinen Weg dies zu erreichen ist die Verwendung von LINQ ?
Kommentar zu dem Problem - Öffnen
Sie benötigen den ganzen Informationen für alle Mitarbeiter, oder nur die empLoc, empPL und empShirt? (Ihre Benennung ist ziemlich böse, da Sie in eine Employee-Klasse, die "emp" als Vorsilbe ist überflüssig, aber "Loc" und "PL" relativ bedeutungslos auf Ihrer eigenen.)
@JonSkeet dies ist die Grundvoraussetzung. Ich habe gerade eine Klasse. Aber im original ist es mit viel der Eigenschaften und alles, was ich brauchen, ist zu prüfen, - 3-Eigenschaften.Ich m tut mir Leid 🙁 . Ich brauche die ganzen Informationen . Nicht nur empLoc, empPL und empShift .
Sie DistinctBy von morelinq mit einem zusammengesetzten Schlüssel (anonymous Typ)?
InformationsquelleAutor der Frage kbvishnu | 2012-09-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnten Sie bei der Implementierung einer benutzerdefinierten
, IEqualityComparer<Mitarbeiter - >
:Nun können Sie mit dieser überladung der
Enumerable.Distinct
:Weniger wiederverwendbare, robuste und effiziente Vorgehensweise, mit Hilfe eines anonymen Typ:
InformationsquelleAutor der Antwort Tim Schmelter
Können Sie
GroupBy
mit anonymen Typ, und dann bekommenFirst
:InformationsquelleAutor der Antwort Cuong Le
Können Sie versuchen, mit diesem code
InformationsquelleAutor der Antwort Aghilas Yakoub
Ich war neugierig, welche Methode wäre schneller:
Fand ich, dass, abhängig von der Größe der Eingabe-Daten und die Anzahl der Gruppen, die Distinct-Methode kann eine Menge mehr performant. (als die Anzahl der Gruppen tendenziell die Anzahl der Elemente in der Liste, deutliche schneller läuft).
Code läuft in LinqPad!
InformationsquelleAutor der Antwort Raj Rao
Versuchen,
InformationsquelleAutor der Antwort John Woo