2013-01-17 10 views
0

Comment faire une boucle dans une datable afin que les lignes s'affichent nettement l'une sous l'autre, ligne par ligne. Ce que j'ai essayé est la suivante mais comme ceci toutes les données s'affichent dans une colonne.Affichage des lignes de données les unes sous les autres

foreach (DataRow row in myTopTenData.Rows) 
      { 
       foreach (DataColumn col in myTopTenData.Columns) 
       { 
        Console.Write(row[col].ToString() + " "); 
        Console.WriteLine(); 
       } 
      } 
+0

Déplacez 'Console.WriteLine();' dans la boucle externe. Et essayez d'utiliser "\ t" comme délimiteur. Sera mieux visuellement. Mais cela n'aidera pas si les longueurs de corde varient beaucoup. – ryadavilli

Répondre

1
foreach (DataRow row in myTopTenData.Rows) 
    { 
     foreach (DataColumn col in myTopTenData.Columns) 
      Console.Write(string.Format("{0, -10}", row[col].ToString())); 

     Console.WriteLine(); 
    } 

string.Format"{0, -10}" vous aidera à aligner vos colonnes (utilisez des valeurs négatives pour un alignement à gauche, positif pour un alignement à droite, et bien sûr 10 est une valeur arbitraire).

1

Vous pouvez utiliser cette petite requête Linq et String.Join:

var allFields = myTopTenData.AsEnumerable() 
     .Select(r => string.Join(Environment.NewLine, r.ItemArray)); 
string allFieldsLines = string.Join(Environment.NewLine, allFields); 

Console.Write(allFieldsLines); 

est ici la version non-Linq avec une boucle:

foreach (DataRow row in myTopTenData.Rows) 
    Console.Write(string.Join(Environment.NewLine, row.ItemArray) + Environment.NewLine); 
1

Pourquoi ne pas essayer juste avec cette :

foreach (DataRow row in myTopTenData.Rows) 
{ 
    foreach (DataColumn col in myTopTenData.Columns) 
    { 
     Console.Write(row[col].ToString() + " "); 
    } 
    Console.WriteLine(); 
} 
+0

Il y aura toujours un saut de ligne après chaque colonne, ce qui n'est pas voulu ... –

+0

Ok..Il y avait un doute sur la compréhension de la question. –

Questions connexes