2013-02-26 2 views
13

LINQ 스타일 쿼리를 사용하여 DataGridView 행을 찾는 방법이 있습니까? 나는 특정 객체에 바인딩 된 객체를 찾아 강조하려고합니다.LINQ를 사용하여 DataGridView 행을 찾는 방법은 무엇입니까?

MyDatagrid.Rows.FirstOrDefault(r => r.DataBoundItem == myItem).Selected = true; 

오류 1 'System.Windows.Forms.DataGridViewRowCollection는'FirstOrDefault '없이 연장 방법 "FirstOrDefault'유형의 첫번째 인수를 받아 'System.Windows.Forms.DataGridViewRowCollection 대한 정의를 포함하지 않는다 '볼 수 있습니다 (당신은 using 지시문 또는 어셈블리 참조가?)

답변

30

하는 경우에만 구현 DataGridViewRowCollection 이후 IEnumerable<DataGridViewRow>에 캐스트 할 필요가 IEnumerable :

비주얼 베이직 버전을 찾고 여기 온 사람들을 위해
1

는, 이명박의 대답은로 변환 : 당신이 나 같은과에서 DataGridViewRow를 찾으려면이를 사용하는 경우,

MyDatagrid.Rows.Cast(Of DataGridViewRow)().FirstOrDefault(Function(r) r.DataBoundItem Is myItem).Selected = True 

또한 바운드 DataTable.DataRow (DataGridView.DataSource = DataTable), 당신은 다음과 같이 액세스 할 수 있습니다 :이 훨씬 더 효율적으로 값을 일치 찾고 당신의 DataGridView 통해 반복보다

Dim MyDataRowSearch() As DataRow = MyDataTable.Select("SomeColumn = SomeValue") 
If MyDataRowSearch.Count = 1 Then 
    MyDataGrid.Rows.Cast(Of DataGridViewRow)().FirstOrDefault(Function(r) DirectCast(r.DataBoundItem, DataRowView).Row Is MyDataRowSearch(0)).Selected = True 
End If 

.

관련 문제