2011-04-28 4 views
1

나는 내 DataGridView에에 다음과 같은 LINQ 쿼리를 사용하는 것을 시도하고있다 :는 하단의 '행을 추가'그래서 거기에 내가 할 수DataGridView에 & Linq에

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

이 DataGridView에 추가합니다. 추가 행에 도달 할 때마다이 쿼리뿐만 아니라 "개체 참조가 개체의 인스턴스로 설정되지 않았습니다."라는 메시지가 표시됩니다.

linq 쿼리 또는 datagridview를 처리하고이 추가 행을 보지 못하도록 할 수 있습니까?

또한 위의 쿼리를 수정하여 해당 행을 건너 뛰려면 어떻게해야합니까?

감사합니다.

답변

1

null 체크를 추가해보십시오.

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

내 생각했지만, 난 여전히 "개체 참조를 얻을 수 객체의 인스턴스로 설정되지 않았습니다. " 그 행을 때. – ErocM

+0

Dang 난 그냥 원래 게시물에 오류 메시지로 Null 참조 예외를 넣어 나타났습니다. 나는 그것을 고쳤다. – ErocM

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");