15

list.Unioninを使用して 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

ありがとう

4

4 に答える 4