2012-04-23 10 views
0

私の鋭いプロジェクトでいくつかのユーザーインターフェイスの制限をしています。 Visual Studio 2008とC#.netを使用しています。C#データの重複を見つける

私は少しのコードを持っています。それは列の行を実行し、重複があるかどうかをチェックするネストされたforループです。

考えてみると、複数のテキストが重複する可能性があるため、テキストを出力できる配列に変更する必要があります。

単純に言えば、一意になるように1ずつ増加するリーグがあります。ユーザーはリーグの部品を交換したいと思っています。

これまで私がこれまで持っていたことは次のとおりです。

public void CheckForDuplicate() 
    { 
     DataGridViewRowCollection coll = ParetoGrid.Rows; 
     DataGridViewRowCollection colls = ParetoGrid.Rows; 

     foreach (DataGridViewRow item in coll) 
     { 
      foreach (DataGridViewRow items in colls) 
      { 
       if (items.Cells[5].Value == item.Cells[5].Value) 
       { 
        if(items.Cells[2].Value != item.Cells[2].Value) 
        { 
         txtDupe.Text = items.Cells[2].Value.ToString(); 
         this.Refresh(); 
         dupi = false; 
        } 
       } 
      } 
     } 
    } 

何も起こりません。何も表示されず、常にfalseです。いくつかの奇妙な理由のデバッグは何もキャッチしていません。 私は逃してしまったばかげたライナーがあるか、それとももっと良い方法があれば、私はさまよっていますか?

多くの感謝!

+0

Perhabsこれがお手伝いします: http://stackoverflow.com/questions/9600950/how-to-count-duplicates-in-datagridview-in- – HW90

+0

実際にはうまくいき、重複がある場合はブールを真に設定します。何らかの理由で、テキストボックスに何も印刷されません。どんな理由? – lemunk

答えて

0

これを行うには、LINQのDistinctを選択します。メソッドの構文を使用して、何かのように:

public bool allUniqueRows() 
    { 
     var distinctCount = from r in ParetoGrid.Rows 
select r.whateverElement.Distinct().Count(); 
    if(distinctCount == ParetoGrid.Rows.Count()) 
    { 
    return true; 
    } 
    else 
    { 
    return false; 
    } 
    } 
関連する問題