C#のセル値に応じて行数を取得する

そのため、値に応じて DataGridView から行数を取得しようとしています。 MessageBox に、この値が DataGridView 上にあるすべての行数を表示します。

これは私が得たコードです:

foreach (DataGridViewRow row in dataGridView1.Rows)
{   
    if (row.Cells[1].Value.ToString().Trim() == "4 - Urgent")
    {
        MessageBox.Show("You have things to do!", "Info", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
}

"4 - Urgent" の値に応じて行数を取得するにはどうすればいいですか?

2
ここでは混乱しますが、合計行数または特定の行番号のうち、行の項目配列の2番目のインデックスに "4 - Urgent"が含まれるようにしますか。
追加された 著者 o_O,
セル内の値 "4 - Urgent"を持つ行数を取得したい@Nobody
追加された 著者 Rekcs,

4 答え

これを試して:

var count = dataGridView1.Rows.Cast()
                     .Count( r => r.Cells[1].Value.ToString().Trim() == "4 - Urgent" );
1
追加された
int totalCount = 0;
for (int i = 0; i < dataGridView1.RowCount; i++)
{
    if (dg.Rows[i].Cells[1].Value.ToString().Trim() == "4 - Urgent") 
   //Trim() for removing whitespaces
    {
         totalCount += 1;
         MessageBox.Show(i);//this will give you the row index
    }
}
MessageBox.Show(totalCount.ToString()); //Total no of rows containing  "4 - Urgent"
0
追加された

あなたは以下のようなことを試すことができます

 int count = dataGridView1.Rows.Cast().Where(r=> r.Cell[1].Value.Tostring.Trim()== "4 - urgent").Count();
0
追加された
@JohanDonne最後に編集し、代わりに Count に述語を追加してください。
追加された 著者 Dmitry,
申し訳ありませんが、愚かなミスをしました(Rowsコレクションではなく、行のセルを調べていました)。私の答えを編集しました...
追加された 著者 Johan Donne,
まだ1つの追加が必要でした(再度編集)。間違いですみません。
追加された 著者 Johan Donne,
Cells.Cast ().Where ... を実行するか、LINQがありません。ファイルの先頭に using System.Linq; が必要です。
追加された 著者 Jakub Dąbek,
()付き - 編集済み。ごめんなさい
追加された 著者 Jakub Dąbek,
動作しません。 DataGridViewCellCollectionには「Where」の定義が含まれていないということです。
追加された 著者 Rekcs,
'System.Data.EnumerableRowCollectionExtensions.Cast <tresult>&zwnj;(System.Data.Enumera&zwnj; bleRowCollection)'は 'メソッド'です。指定されたコンテキストでは無効です。
追加された 著者 Rekcs,
DataGridViewCellCollectionには 'Where'の定義が含まれていないという同じメッセージを言ったKepp
追加された 著者 Rekcs,

最初の列で入力と一致する行のリストを取得する

IEnumerable rows = dataGridView1.Rows
        .Cast()
        .Where(r => r.Cells[1].Value.ToString().Equals("4 - Urgent"));
0
追加された