2013-04-26 1 views

Répondre

2
var columns = dataSet.Tables 
        .Cast<DataTable>() 
        .SelectMany(t=>t.Columns 
            .Cast<DataColumn>() 
            .Select(c=>c.ColumnName)); 

ou si vous voulez que le nom de la table et

var columns = dataSet.Tables 
        .Cast<DataTable>() 
        .SelectMany(t=>t.Columns 
            .Cast<DataColumn>() 
            .Select(c=> new { 
                 t.TableName, 
                 c.ColumnName 
                } 
              ) 
           ); 

Le Cast<> est necesary pour transformer les propriétés non-générique IEnumerableTables et Columns en IEnumerable<T> types qui peuvent être utilisés dans les requêtes Linq.

+0

+1 meilleure idée (en utilisant le 'SelectMany'). –

+0

salut stanley, pouvez-vous s'il vous plaît dites-moi quels changements devraient être faits si je veux des données aussi .. – ravi

0

Essayez ceci:

List<string> result = new List<string>(); 

foreach (DataTable item in dataSet.Tables) 
{ 
    result.AddRange(item.Columns.Cast<DataColumn>().Select(i => i.ColumnName).ToList()); 
} 
3

LINQ sans boucles

var columnNames = (from table in dataSet.Tables.OfType<DataTable>() 
       from column in table.Columns.OfType<DataColumn>() 
       select column.ColumnName).ToList(); 
+0

merci pour l'aide jure !! –

Questions connexes