Ich habe diese KlasseWie Kreuzung von zwei Klassen zu erhalten, basierend auf Eigenschaft
public class FlightSegment{
public string ClassName { get;set;}
}
Und ich will FlightSegments
mit gemeinsamen ClassName
void Main()
{
var list1 = new List<FlightSegment>() {
new FlightSegment{ ClassName = "A"},
new FlightSegment { ClassName = "B"}
};
var list2 = new List<FlightSegment>() {
new FlightSegment{ ClassName = "B"},
new FlightSegment { ClassName = "C"}
};
var listOfLists = new List<List<FlightSegment>>() { list1, list2 };
var intersection = listOfLists.Aggregate((previousList, nextList) => previousList.Intersect(nextList).ToList());
Console.WriteLine(intersection); //Gives me empty result
}
zu bekommen habe ich versucht, so etwas wie diese:
var intersection = listOfLists.Aggregate((previousList, nextList) =>
previousList.Select(e=>e.ClassName).Intersect(nextList.Select(e=>e.ClassName)).ToList());
Aber gibt Fehler:
Cannot convert expression type System.Collection.Generic.List<string> to return type System.Collection.Generic.List<FlightSegment>
Nizza Antwort. Beachten Sie die Anleitung in der Dokumentation: "Wir empfehlen, dass Sie von der Klasse EqualityComparer' ableiten, anstatt die Schnittstelle 'IEqualityComparer ' zu implementieren, da die Klasse' EqualityComparer 'auf Gleichheit prüft, indem Sie die Methode 'IEquatable .Equals' verwenden die 'Object.Equals' Methode." –
@JimMischel: Danke, ich werde meine Antwort aktualisieren. –
Gut zu wissen, ob er EqualityComparer erbt, wenn er IEqualityComparer implementiert . –
jKlaus