c# linq datatable asqueryable datacolumncollection

c# - Consultando DataColumnCollection con LINQ



datatable asqueryable (3)

Estoy tratando de realizar una consulta LINQ simple en la propiedad Columnas 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 obtener el DataColumnCollection para jugar bien con LINQ?


Con la sintaxis del método Linq:

var x = myDataTable.Columns.Cast<DataColumn>().Select(c => c.ColumnName);


Qué tal si:

var x = from c in dt.Columns.Cast<DataColumn>() select c.ColumnName;


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 explícitamente tipeada se traduce a una invocación de Cast (IEnumerable)", de acuerdo con el artículo Enumerable.Cast<TResult> Method MSDN.