2011-04-28 60 views
1

我嘗試使用下面的LINQ查詢我的datagridview:的DataGridView和LINQ的

var count = dgv_Checks.Rows.Cast<DataGridViewRow>() 
         .Count(row => row.Cells["SubmitToAch"] 
         .Value.ToString() == "True"); 

我允許添加到此的DataGridView所以在一個底部的「添加行」。每次到達該添​​加行時,它都會給我「對象引用未設置爲對象的實例」,不僅在此查詢中,而且在其他情況下。

有沒有辦法處理linq查詢或datagridview並讓它看不到這個添加行?

此外,如何修復上面的查詢以跳過該行?

謝謝!

回答

1

嘗試添加空檢查?

var count = dgv_Checks.Rows.Cast<DataGridViewRow>() 
      .Count(row => row.Cells["SubmitToAch"] != null && row.Cells["SubmitToAch"].Value.ToString() == "True"); 
+0

這是我的想法,但我仍然得到「對象引用未設置爲對象的實例。「當我擊中那一行時。 – ErocM 2011-04-28 20:55:38

+0

當我剛纔注意到我把原始帖子上的錯誤信息作爲空引用異常。我修正了...... sry。 – ErocM 2011-04-28 20:56:10

0

應該

row.Cells["SubmitToAch"].Value != null 
0

一箇舊的職位,但我覺得有必要回答,因爲同樣的問題今天早些時候纏着我。 (檢查null)被接受的答案提出的解決方案仍然會導致我的對象引用異常,但一個IsNewRow檢查跳過正確添加的行:

var count = dgv_Checks.Rows.Cast<DataGridViewRow>() 
      .Count(row => !row.IsNewRow && row.Cells["SubmitToAch"].Value.ToString() == "True");