C # сравнить конкретное свойство элемента между двумя списками [дубликаты]

Dispose зависит от выхода WaitHandle. Таким образом, хотя using вызывает Dispose, он не будет вдаваться в силу до тех пор, пока не будут выполнены условия стабильного состояния. Когда вы вызываете ReleaseMutex, вы сообщаете системе, что вы освобождаете ресурс, и, таким образом, он может свободно распоряжаться им.

0
задан Allan 17 February 2019 в 17:47
поделиться

1 ответ

Похоже, ваш list3 - это просто временный список для хранения предметов из list2. Просто используйте это:

var list3 = list2.Where(x => !list1.Any(y => x.MyProperty == y.MyProperty));

И затем добавьте их в list1:

list1.AddRange(list3);

Однако вы можете напрямую обновить list1 с помощью простого цикла.

foreach(var e in list2)
{
    if(!list1.Any(x => x.MyProperty == e.MyProperty))
        list1.Add(e);
}

Вы также можете использовать Except, чтобы выполнить проверку на равенство ваших предметов. Таким образом, вы должны предоставить IEqualityComparer:

var list3 = list2.Except(list1, new MyComparer());

class MyComparer : IEqualityComparer<MyElementType>
{
    public bool Equals(MyElementType x, MyElementType y)
    {
        return x.MyProperty == y.MyProperty;
    }
    public int GetHashCode(MyElementType e)
    {
        return e.MyProperty.GetHashCode();
    }
}
0
ответ дан HimBromBeere 17 February 2019 в 17:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: