Interrogation de DataColumnCollection avec LINQ
-
04-07-2019 - |
Question
J'essaie d'effectuer une requête LINQ simple sur la propriété Columns d'un DataTable:
from c in myDataTable.Columns.AsQueryable()
select c.ColumnName
Cependant, voici ce que j’obtiens:
Impossible de trouver une implémentation du motif de requête pour le type de source 'System.Linq.IQueryable'. 'Sélectionnez' non trouvé. Pensez explicitement à spécifier le type de la variable d’intervalle 'c'.
Comment obtenir que DataColumnCollection soit bien joué avec LINQ?
La solution
Que diriez-vous de:
var x = from c in dt.Columns.Cast<DataColumn>()
select c.ColumnName;
Autres conseils
Vous pouvez également utiliser:
var x = from DataColumn c in myDataTable.Columns
select c.ColumnName
Cela va effectivement faire 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 un appel de Cast (IEnumerable) & ";, selon le Enumerable.Cast<TResult> Method
Article MSDN.
Avec la méthode Linq Syntaxe:
var x = myDataTable.Columns.Cast<DataColumn>().Select(c => c.ColumnName);