1

いくつかの列と行を持つdatagridviewがあります。列の1つは文字列型(DataGridViewTextBoxColumn)です。このすべての行を繰り返し処理しDataGridViewTextBoxColumnて、特定の文字列と一致する最初の要素のインデックス(行インデックス)を見つけたいので、次のようにします。

int rowIndex = this.dataGridView1.Rows
    .Cast<DataGridViewRow>()
    .ToArray()
    .First(row => row.Cells[this.colDesired.Index].Value == stringToSearch)
    .Index;  

しかし、エラーが発生します。

Linqとラムダを使用したい。

4

2 に答える 2

0

これは機能するはずです:

int rowIndex = this.dataGridView1.Rows.OfType<DataGridViewRow>()
       .First(row => row.Cells[this.colDesired.Index].Value == stringToSearch).Index;  
于 2012-10-28T19:08:58.683 に答える
0

あなたの解決策は私にとってうまくいきます。注意すべき点はほとんどありません。

  1. ToArrayIEnumberableでを行う必要はありませんCast
  2. this.colDesired.Index有効な値があることを確認してください。それ以外の場合は、ランタイム例外が発生します。
  3. のデフォルト値はnullになるため、nullの場合を処理するには、セルの値(ここではテキストタイプ)に応じてDatagridViewCell.Value、適切な形式の値()を取得する必要があります。DatagridViewCell.FormattedValueFormatType
  4. DatagridViewCell.FormattedValueはオブジェクトであるため、最初に文字列に変換する必要があります。

これを行う:

int rowIndex = dataGridView1.Rows.Cast<DataGridViewRow>().First(row => row.Cells[this.colDesired.Index].FormattedValue.ToString() == stringToSearch).Index; 
于 2012-10-28T18:58:57.133 に答える