Предположим, у нас есть 2 коллекции, по крайней мере, IEnumerable для включения в Linq (также предположим, что .net 4.0):
List<T1> list1;
List<T2> list2;
Я могу определить равенство между объектами типа T1 и T2.
Каков наилучший способ (т. Е. Интерфейс .net и предпочтительный Linq), чтобы проверить, равны ли два списка (порядок элементов не имеет значения).
Как я могу оптимизировать эту проблему, если я знаю, что объекты T1 и T2 имеют идентификатор
Ex для T1 и T2:
class Device
{
string Id;
string Name;
}
class DeviceInfo
{
string Identifier;
string FriendlyName;
DateTime CreateDate;
}
Позднее редактировать:
Решение должно включать какой-то компаратор равенства, который я пишу, и он достаточно общий. Могут быть случаи, когда 2 объекта имеют одинаковые идентификаторы, но разные имена, и сравнение должно завершиться неудачно. Например:
static bool AreEqual(Device device, DeviceInfo deviceInfo)
{
return device.Id == deviceInfo.Identifier &&
device.Name == deviceInfo.FriendlyName;
}