c# - texto - ¿Cómo puedo usar LINQ para encontrar una fila DataGridView?
seleccionar fila datagridview c# por codigo (2)
Necesita convertir a IEnumerable<DataGridViewRow>
ya que DataGridViewRowCollection
solo implementa IEnumerable
:
MyDatagrid.Rows
.Cast<DataGridViewRow>()
.FirstOrDefault(r => r.DataBoundItem == myItem).Selected = true;
¿Hay alguna forma de utilizar una consulta de estilo LINQ para encontrar una fila DataGridView? Intento encontrar el que está vinculado a un objeto específico y resaltarlo.
MyDatagrid.Rows.FirstOrDefault(r => r.DataBoundItem == myItem).Selected = true;
El error 1 ''System.Windows.Forms.DataGridViewRowCollection'' no contiene una definición para ''FirstOrDefault'' y no se pudo encontrar ningún método de extensión ''FirstOrDefault'' que aceptara un primer argumento de tipo ''System.Windows.Forms.DataGridViewRowCollection'' (¿falta un ¿usando una directiva o una referencia de ensamblado?)
Para aquellos que vinieron aquí buscando la versión VB, la respuesta de Lee se traduce en:
MyDatagrid.Rows.Cast(Of DataGridViewRow)().FirstOrDefault(Function(r) r.DataBoundItem Is myItem).Selected = True
Además, si usted es como yo, y está utilizando esto para encontrar su DataGridViewRow
de su DataTable.DataRow
encuadernado ( DataGridView.DataSource = DataTable
), entonces puede acceder de esta manera:
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
Esto es mucho más eficiente que recorrer su DataGridView
buscando valores coincidentes.