Я пытаюсь объединить два списка, используя list.Union
в LinqPad
, но я не могу заставить его работать и хочу проверить, что мое понимание верное.
Учитывая этот простой класс:
public class Test
{
public int Id { get; set;}
public int field1 { get; set; }
public bool Equals(Test other)
{
return this.Id.Equals(other.Id);
}
}
И два списка заполнены следующим образом:
List<Test> list = new List<Test>();
list.Add( new Test { Id = 1, field1 = 1});
list.Add( new Test { Id = 1, field1 = 2});
list.Add( new Test { Id = 2, field1 = 3});
list.Add( new Test { Id = 2, field1 = 4});
List<Test> list2 = new List<Test>();
list2.Add( new Test { Id = 1, field1 = 1});
list2.Add( new Test { Id = 1, field1 = 2});
list2.Add( new Test { Id = 2, field1 = 3});
list2.Add( new Test { Id = 2, field1 = 4});
Затем я попытаюсь: var mergedList = list.Union(list2).ToList();
и вывести данные с помощью простого цикла foreach
и получить этот вывод:
ID: 1 -------- 1
ID: 1 -------- 2
ID: 2 -------- 3
ID: 2 -------- 4
ID: 1 -------- 1
ID: 1 -------- 2
ID: 2 -------- 3
ID: 2 -------- 4
У меня создалось впечатление, что Union
должен удалить возвращаемые дубликаты:
ID: 1 -------- 1
ID: 1 -------- 2
ID: 2 -------- 3
ID: 2 -------- 4
Я что-то делаю неправильно или неправильно понял?
Кроме того, должно ли оно работать без явного переопределения метода Equals
в классе Test
?
Спасибо