2017-05-12 17 views
0

重複を削除:C#リストプール/私はこのようになりますリストを持っている

Id: 1 
Line1: Microsoft 
Line2: Windows 
Line3: Server 
Line4: null 
Line5: null 

Id: 2 
Line1: Microsoft 
Line2: Windows 
Line3: Server 
Line4: null 
Line5: null 

Id: 3 
Line1: Microsoft 
Line2: Windows 
Line3: Server 
Line4: Development 
Line5: null 

今私は/プールすべての重複削除したいと思います(同上1および2)。 これはどのように可能ですか?

私はこのような何か試してみました:

result = result.DistinctBy(x => x.Line3).ToList(); 

をしかし、それも正しくない同上3を削除します。

期待出力:

Id: 2    // can also be 1, doesn't matter 
Line1: Microsoft 
Line2: Windows 
Line3: Server 
Line4: null 
Line5: null 

Id: 3 
Line1: Microsoft 
Line2: Windows 
Line3: Server 
Line4: Development 
Line5: null 
+0

「すべての複製をプールする」とはどういう意味ですか?期待される出力を表示します。 – MrZander

+0

申し訳ありませんが、削除したいと思います。私の編集@MrZanderを見てください – Anokrize

+0

重複している場合は、1または2を維持するかどうかは重要ですか? – msitt

答えて

1

簡単な方法は、グループオブジェクトとしてTupleを作成することです。

result = result.GroupBy(r => Tuple.Create(r.Line1, r.Line2, r.Line3, r.Line4, r.Line5)) 
       .Select(g => g.First()) 
       .ToList(); 

私はDistinctByを持っていないが、これは動作するはずです:

result = result.DistinctBy(r => Tuple.Create(r.Line1, r.Line2, r.Line3, r.Line4, r.Line5)) 
       .ToList(); 
+0

それをしました!ありがとうございます。 – Anokrize

0

あなたはちょうどあなたが気にすべてのフィールドを持つ匿名型を作成する必要があり、あなたのDistinctByと正しい軌道に乗っています

result = result.DistinctBy(x => new {x.Line1, x.Line2, x.Line3, x.Line4, x.Line5}).ToList(); 
関連する問題