2016-04-06 6 views
-1

私はおそらく最大3回、おそらく同じメッセージを2回、3回目は前の2回の実行とは異なるメッセージを持つことができるテストで大きなリストを持っています。ユニークな結果しか出ないユニークなテストだけを表示するコードを実装しようとしています。 がより良いビューを持っているために、これは、ユースケースのようになります。あなたが見ることができるようにC#を使用して重複した結果を含む重複テストを削除するにはどうすればよいですか?

testname="TestABC" errormessage="ErrXYZ"
testname="Test3454" errormessage="Err123"
testname="TestABC" errormessage="Err123"
testname="TestABC" errormessage="ErrXYZ"
testname="Test3454" errormessage="ErrYTR"
testname="Test3454" errormessage="ErrABC"

、 "TestABCは" と2回表示されます同じエラーが発生し、別のエラーが発生して1回発生します。私は、フィルタリングの後、次の出力を確認したいと思います:

testname="TestABC" errormessage="ErrXYZ"
testname="Test3454" errormessage="Err123"
testname="TestABC" errormessage="Err123"
testname="Test3454" errormessage="ErrYTR"
testname="Test3454" errormessage="ErrABC"

私はC#にはかなり新しいですし、任意のヘルプや指導をいただければ幸いです。 ありがとう!

+0

あなたは 'List 'を持っていますか? – Valentin

+0

[C#のリストから重複を削除]の可能な複製(http://stackoverflow.com/questions/47752/remove-duplicates-from-a-listt-in-c-sharp) –

答えて

0

まず第一に、あなたはIEqualityComparerインタフェースを実装し、Distinct方法

class Comparer : IEqualityComparer<Test> 
{ 
    public bool Equals(Test x, Test y) 
    { 
     return string.Equals(x.testname, y.testname) && string.Equals(x.errormessage, y.errormessage); 
    } 

    public int GetHashCode(Test obj) 
    { 
     string name = string.Format ("{0}{1}", obj.testname, obj.errormessage); 
     int hash = 7; 
     for (int i = 0; i < name.Length; i++) 
     { 
      hash = hash * 31 + name[i]; 
     } 

     return hash; 
    } 
} 

を使用する必要がありますそして、あなたはList使用Distinct方法

testList.Distinct(new Comparer()) 

を使用しかし、私はIEqualityComparerSetを使用することをお勧めします。

関連する問題