list.Union
inを使用して 2 つのリストをマージしようとしています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);
}
}
そして、次のように 2 つのリストが作成されました。
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
ありがとう