2016-03-31 4 views
-1

eine break-Anweisung gesetzt Ich versuche, Informationen aus einer SQL-Datenbank abzurufen, die Typen A, B und C, BeispielFor-Schleife kehrt Informationen, dass es nicht sein sollte, wenn ich in

COL1  COL2  
A   X 
A   X 
A   X 
A   X 
A   X 
B   X 
B   X 
B   X 
C   X 
C   X 
C   X 

ich sein haben diesen Code:

StringBuilder sb = new StringBuilder(); 
     string line = ""; 
     string d = ","; 
     foreach (DataColumn c in T.Columns) 
     { 
      line = line + c.ColumnName + d; 
     } 
     sb.AppendLine(line); 
     foreach (DataRow r in T.Rows) 
     { 
      line = ""; 
      for (int i = 0; i < T.Columns.Count; i++) 
      { 
       DataRow R = T.Rows[i]; 
       if (R[0].ToString() != "A") 
       { 
        break; 
       } 
       line = line + r[i].ToString() + d; 
      } 
      sb.AppendLine(line); 
     } 

     File.WriteAllText(filePath, sb.ToString()); 

wenn ich diese laufen und versuchen, meine Ausgabe zu erhalten (eine CSV-Datei) es gibt alle Zeilen und A, B und C-Werte, wenn ich es nur die A-Werte zurückgeben möchten und stoppen.

Irgendwelche Ratschläge?

+0

legte es line = Zeile + r [i] .ToString() + d; innerhalb von if (R [0] .ToString() == "A") Anweisung und entfernen Sie Pause davon – rashfmnb

+0

Wenn 'i' ist der Index für die Spalten dann was genau ist der Punkt von' DataRow R = T.Rows [i ] '? Was wäre, wenn es eine Reihe und 5 Spalten gäbe? Das würde eine Ausnahme auslösen. – juharr

+0

meine Entschuldigung juharr, ich werde den Code für Sie aktualisieren, so dass Sie die gesamte Klasse sehen können – Nonagon

Antwort

0

Überprüfen Sie in der ersten Spalte, ob die Zeile ausgegeben werden soll.

foreach (DataRow r in T.Rows) 
{ 
    if(r[0]=="A") 
    { 
     line = ""; 
     for (int i = 0; i < T.Columns.Count; i++) 
     { 
      line = line + r[i].ToString() + d; 
     } 
     sb.AppendLine(line); 
    } 
} 
File.WriteAllText(filePath, sb.ToString()); 

Wenn Ihre Zeilen bestellt und Sie wissen, dass Sie nach der ersten Zeile stoppen, die nicht mit einem A startet:

foreach (DataRow r in T.Rows) 
{ 
    if(r[0]!="A") break; 

    line = ""; 
    for (int i = 0; i < T.Columns.Count; i++) 
    { 
     line = line + r[i].ToString() + d; 
    } 
    sb.AppendLine(line); 
} 
File.WriteAllText(filePath, sb.ToString()); 
+0

Hallo Steven sauber aussehen zu Ich musste r [0] zu r [0] .ToString() ändern, damit es funktioniert, aber es hat wie ein Charme funktioniert Vielen Dank – Nonagon