Я видел Quickest way to compare two List<>, но мне трудно адаптировать его к моей ситуации. Моя проблема в том, что списки имеют разные типы.C# Сравнение двух списков разных объектов
Мои списки так:
List<Type1> firstList;
List<Type2> secondList;
Вот что я сейчас:
foreach (Type1 item in firstList)
{
if (!secondList.Any(x => x.Id == item.Id))
{
// this code is executed on each item in firstList but not in secondList
}
}
foreach (Type2 item in secondList)
{
if (!firstList.Any(x => x.Id == item.Id))
{
// this code is executed on each item in secondList but not in firstList
}
}
Это работает и все, но O(n^2)
. Есть ли способ сделать это более эффективным? Решение в вопросах, которые я связывал выше, говорит, чтобы использовать .Except
, но он не принимает лямбда.
Редактировать: Я упомянул об этом выше, но это по-прежнему помечено как дубликат. У меня нет двух списков одного и того же объекта. У меня есть два списка разных объектов. Тип1 и Type2 - разные типы. У них просто есть идентификатор, который мне нужно совместить.
Не действительно, так как он просто сравнивает ID id – Murdock
Это не Идентификатор ... собственность? – Anthony
Как это дублировать? Вопрос, который вы отметили, - это сравнение двух списков MyObject. У меня нет двух списков одного типа. У меня есть Type1 и Type2, они оба имеют идентификатор, который мне нужно совместить. И мне нужно делать разные вещи, если это в firstList, но не в SecondList, а в том случае, если это во втором списке, но не в первом списке. Поэтому в основном мне нужны два раздела, которые говорят «// делаем что-то здесь». – vkapadia