J'essaie d'effectuer une simple requête LINQ sur la propriété Columns d'un DataTable:
from c in myDataTable.Columns.AsQueryable()
select c.ColumnName
Cependant, ce que je reçois est le suivant:
Impossible de trouver une implémentation du modèle de requête pour le type de source 'System.Linq.IQueryable'. "Sélectionner" introuvable. Envisagez de spécifier explicitement le type de la variable de plage "c".
Comment puis-je faire en sorte que DataColumnCollection joue Nice avec LINQ?
Que diriez-vous:
var x = from c in dt.Columns.Cast<DataColumn>()
select c.ColumnName;
Vous pouvez également utiliser:
var x = from DataColumn c in myDataTable.Columns
select c.ColumnName
Il fera effectivement la même chose que le code de Dave: "dans une expression de requête, une variable d'itération explicitement typée se traduit par une invocation de Cast (IEnumerable)", selon le Enumerable.Cast<TResult> Method
Article MSDN.
Avec la syntaxe de la méthode Linq:
var x = myDataTable.Columns.Cast<DataColumn>().Select(c => c.ColumnName);