c# .net datagridview lambda

C#- Sintaxis Lambda para el bucle sobre DataGridView.Rows



.net (2)

Bueno, no hay ForEach método de extensión ForEach incorporado en enumerable. Me pregunto si un simple bucle foreach podría no ser más fácil. Aunque es trivial escribir, ...

En un empujón, tal vez podría usar de manera útil Where aquí:

foreach (var row in dataGridView.Rows.Cast<DataGridViewRow>() .Where(row => (string)row.Cells[0].Value == "abc")) { row.Visible = false; }

Pero personalmente, solo usaría un bucle simple:

foreach (DataGridViewRow row in dataGridView.Rows) { if((string)row.Cells[0].Value == "abc") { row.Visible = false; } }

¿Cuál es la sintaxis lambda correcta en C # para recorrer cada DataGridViewRow de DataGridView? Y como ejemplo digamos que la función hace que la fila sea .Visible = false en función de algún valor en las celdas [0].


Vea mi respuesta a esta pregunta: actualice todos los objetos en una colección usando LINQ

Esto no es posible con las expresiones LINQ incorporadas, pero es muy fácil codificarse usted mismo. Llamé al método Iterate para no interferir con List <T> .ForEach.

Ejemplo:

dataGrid.Rows.Iterate(r => {r.Visible = false; });

Fuente de iteración:

public static void Iterate<T>(this IEnumerable<T> enumerable, Action<T> callback) { if (enumerable == null) { throw new ArgumentNullException("enumerable"); } IterateHelper(enumerable, (x, i) => callback(x)); } public static void Iterate<T>(this IEnumerable<T> enumerable, Action<T,int> callback) { if (enumerable == null) { throw new ArgumentNullException("enumerable"); } IterateHelper(enumerable, callback); } private static void IterateHelper<T>(this IEnumerable<T> enumerable, Action<T,int> callback) { int count = 0; foreach (var cur in enumerable) { callback(cur, count); count++; } }