c# - usar - Usando el objeto DataGridViewRowCollection en LINQ
recorrer datatable c# linq (1)
Sí, haz esto:
var rows = yourDataGridViewRowCollection
.Cast<DataGridViewRow>()
.Where(row => row.index > 4);
Esto utiliza el método de extensión Enumerable.Cast
:
El método
Cast<TResult>(IEnumerable)
permite invocar a los operadores de consulta estándar en colecciones no genéricas proporcionando la información de tipo necesaria. Por ejemplo,ArrayList
no implementaIEnumerable<T>
, pero al llamar aCast<TResult>(IEnumerable)
en el objetoArrayList
, los operadores de consulta estándar pueden utilizarse para consultar la secuencia.
Me gustaría usar un DataGridViewRowCollection
en una expresión LINQ usando métodos de extensión y expresiones lambda. Desafortunadamente, los métodos de extensión son para los tipos IEnumerable<T>
, que DataGridViewRowCollection
no implementa. Lo gracioso es que puedo usar LINQ aquí con la sintaxis similar a SQL:
IEnumerable<DataGridViewRow> lRows = from DataGridViewRow row in dgvGrid.Rows
select row;
Después de hacer eso, puedo usar los métodos de extensión LINQ:
foreach (DataGridViewRow lRow in lRows.Where(row => row.index > 4)) { ... }
¿Hay alguna forma en que pueda convertir mi DataGridViewRowCollection
a un IEnumerable<>
sin usar esa primera declaración larga? Lo mismo se aplica a DataGridViewCellCollection
y DataGridViewColumnCollection
.
PD. Estoy usando .net framework 3.5