2010-07-15 6 views
2

J'ai la collection de lignes et les noms de colonnes sous forme de liste, est-il possible de transmettre tous les noms de colonne en utilisant le délégué à une seule ligne et de renvoyer les valeurs? ou y a-t-il un autre meilleur moyen de l'accompagner?Collection de lignes de données et de colonnes LinQ C#

Répondre

3

Voulez-vous dire que vous avez un DataRow et que vous voulez la valeur dans chaque colonne?

Ensuite, tout ce dont vous avez besoin est ceci:

object[] values = row.ItemArray; 

Si vous ne voulez que les valeurs de spécifiques colonnes, je vous recommande un peu de magie LINQ pour leur donner la forme d'un Dictionary<string, object>:

IEnumerable<string> columnNames = GetDesiredColumnNames(); 

var values = columnNames 
    .ToDictionary(name => name, name => row[name]); 

Bien sûr, vous pouvez également utiliser cette même magie LINQ pour obtenir un Dictionary<string, object> pour toutes colonnes (si object[] n'est pas assez descriptif à votre goût):

IEnumerable<string> columnNames = row.Table.Columns 
    .Cast<DataColumn>() 
    .Select(column => column.ColumnName); 

var values = columnNames 
    .ToDictionary(name => name, name => row[name]); 
+0

C'est bon Dan, La magie a vraiment fonctionné :-) Merci. – Webbies

Questions connexes