Consultar DataColumnCollection con LINQ
-
04-07-2019 - |
Pregunta
Estoy intentando realizar una consulta LINQ simple en la propiedad Columns de una DataTable:
from c in myDataTable.Columns.AsQueryable()
select c.ColumnName
Sin embargo, lo que obtengo es esto:
No se pudo encontrar una implementación del patrón de consulta para el tipo de fuente 'System.Linq.IQueryable'. 'Seleccionar' no encontrado. Considere especificar explícitamente el tipo de la variable de rango 'c'.
¿Cómo puedo hacer que DataColumnCollection funcione bien con LINQ?
Solución
¿Qué tal:
var x = from c in dt.Columns.Cast<DataColumn>()
select c.ColumnName;
Otros consejos
También puedes usar:
var x = from DataColumn c in myDataTable.Columns
select c.ColumnName
Efectivamente hará lo mismo que el código de Dave: & "; en una expresión de consulta, una variable de iteración escrita explícitamente se traduce en una invocación de Cast (IEnumerable) &"; de acuerdo con Enumerable.Cast<TResult> Method
artículo de MSDN.
Con la sintaxis del método Linq:
var x = myDataTable.Columns.Cast<DataColumn>().Select(c => c.ColumnName);