Nehmen wir an, wir zwei Kollektionen, mindestens IEnumerable an die Macht auf Linq (auch davon ausgehen, .net 4.0):Gleichheit für 2 Listen verschiedener Typen
List<T1> list1;
List<T2> list2;
Ich kann die Gleichstellung von Objekten des Typs T1 und T2 definieren .
Was ist der beste Weg ist, (das heißt .net-Schnittstelle und Linq bevorzugt), um zu überprüfen, ob die 2 Listen gleich sind (Reihenfolge der Elemente ist nicht relevant).
Wie kann ich dieses Problem zu optimieren, wenn ich, dass die Objekte T1 und T2 weiß
eine ID
Ex von T1 und T2:
class Device
{
string Id;
string Name;
}
class DeviceInfo
{
string Identifier;
string FriendlyName;
DateTime CreateDate;
}
Später bearbeiten:
Die Lösung sollte eine Art Gleichheitsvergleich beinhalten, den ich schreibe und generisch genug ist. Es kann Fälle geben, in denen 2 Objekte die gleiche ID, aber einen anderen Namen haben, und der Vergleich sollte dann fehlschlagen. Zum Beispiel:
static bool AreEqual(Device device, DeviceInfo deviceInfo)
{
return device.Id == deviceInfo.Identifier &&
device.Name == deviceInfo.FriendlyName;
}
'IEqualityComparer' soll an Objekten des gleichen Typs arbeiten. Sie können es so einrichten, dass es zwei "Objekt" -Parameter akzeptiert und einige Castings oder ähnliches versucht, aber nicht: Verwenden Sie das richtige Werkzeug für den Job. – Jon