[C#] LINQ를 사용하여 DataGridView 행을 찾는 방법은 무엇입니까?


Answers

리의 대답은 VB 버전을 찾고있는 사람들을 위해 다음과 같이 번역됩니다.

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

또한, 나 같은 사람이라면, 바인딩 된 DataTable.DataRow ( DataGridView.DataSource = DataTable )에서 DataGridViewRow 를 찾으려면 다음과 같이 액세스 할 수 있습니다.

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

DataGridView 반복되는 값보다 일치하는 값을 찾는 것보다 훨씬 효율적입니다.

Question

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

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

오류 1 'System.Windows.Forms.DataGridViewRowCollection'에는 'FirstOrDefault'에 대한 정의가없고 'System.Windows.Forms.DataGridViewRowCollection'형식의 첫 번째 인수를 수락하는 확장 메서드 'FirstOrDefault'가 없습니다. 지시어 또는 어셈블리 참조 사용?)