wie konvertiert den gesamten Inhalt einer DataTable-Spalte zu einer durch Trennzeichen getrennte Zeichenfolge in C#?
Ich bin das abrufen von Daten aus einer MSSQL-server mithilfe des SqlDataAdapter-und DataSet. Aus diesem DataSet erstelle ich eine DataTable. Mein Ziel ist, zu konvertieren jede Spalte der Tabelle in einen string, wobei die Elemente werden durch Komma getrennt. Ich dachte, ich würde versuchen, die string-Konvertierung ersten, bevor Sie das Trennzeichen arbeiten.
Wird der code ausgeführt, der in der code-behind einer ASP.Net Seite. Das ultimative Ziel ist, übergeben Sie die Zeichenfolge, um eine jscript-variable, es ist eine "funktionale Anforderung", die ich erstellen Sie eine durch Trennzeichen getrennte Zeichenfolge aus den Spalten, und dass es, um am Ende als eine jscript-variable.
Hier ist, was ich habe, so weit:
DataSet myDataSet = new DataSet();
mySqlDataAdapter.Fill(myDataSet);
DataTable temperature = myDataSet.Tables["Table"];
//LOOP1
foreach (DataRow row in temperature.Rows)
//this loop works fine and outputs all elements
//of the table to the web page, this is just to
//test things out
{
foreach (DataColumn col in temperature.Columns)
{
Response.Write(row[col] + " ### ");
}
Response.Write("<br>");
}
//LOOP2
foreach (DataColumn column in temperature.Columns)
//this loop was meant to take all elements for each
//column and create a string, then output that string
{
Response.Write(column.ToString() + "<br>");
}
In SCHLEIFE1 Dinge funktionieren. Meine Daten hat 4 Spalten, alle sind richtig gerendert mit einem Datensatz pro Zeile, die auf der web-Seite.
Sah ich den code für LOOP2 an http://msdn.microsoft.com/en-us/library/system.data.datacolumn.tostring.aspx, das scheint genau das zu tun, was ich brauche, außer, dass es nicht tatsächlich tun, was ich will.
Das einzige, was LOOP2 tut, ist schreiben 4 Zeilen auf der web-Seite. Jede Zeile ist die Kopfzeile der jeweiligen Spalte der Tabelle aber keine zusätzlichen Daten. Klar gibt es entweder ein Logik-Fehler meinerseits oder ich missverstehen, wie DataColumn und .toString für die es funktioniert. Bitte helfen Sie mir auf diese ein. Vielen Dank im Voraus.
BEARBEITEN:
Hier ist ein SQL-Abfrage-Ergebnis Beispiel, das ist, was die Tabelle sieht wie folgt aus:
Tabelle quesry Ergebnis @ ImageShack
Was ich will, am Ende sind vier Saiten, hier ist ein Beispiel für die Zeichenfolge, die erstellt werden aus der zweiten Spalte: "-6.7, -7, -7.2, -7.3, -7.3".
Derzeit ja, ein string pro Spalte, D. H. alle Datensätze in der Spalte umgewandelt in einen einzigen string. Der Grund für all dies ist zwar übergeben Sie die Zeichenfolge, um eine jscript-variable eher als Reaktion.write ().
InformationsquelleAutor Reality Extractor | 2011-04-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dieser code verketten der Werte von Zellen, die unter jeder Spalte mit
", "
:Beispielsweise für DataTable definiert als:
... es wird produzieren
"1, 11, 111"
und"2, 22, 222"
strings.Edit: ich sah Sie ausgewählt haben, deklarieren Sie die Spalte als var im Gegensatz zu DataColumn, ist das eine Frage des persönlichen Geschmacks/Stils oder gibt es ein Problem mit der Codierung?
Betrachten Sie Folgendes Szenario (auf der gleichen Datentabelle Beispiel wie oben):
Wir übernehmen wir haben nun die Liste der Liste der Spalte Werte. Also, wenn wir es ausdrucken, wie hier:
Erwarten wir
1 11 111
gefolgt von2 22 222
. Richtig?Falsch.
Dieser code wird ausgegeben
2 22 222
zweimal. Warum? Unsere.Select(r => r[column].ToString())
erfasstcolumn
variable nicht den Wert, sondern die variable selbst - und da wir don ' T verwenden Sie es sofort, sobald wir außerhalb der Schleife alles, was wir wissen, ist letzten Wert voncolumn
.Erfahren Sie mehr über dieses Konzept Suche für Verschlüsse und erfassten Variablen - zum Beispiel in Beiträgen wie diese.
Zusammenfassung:
In diesem Fall können Sie gehen mit
DataColumn
imforeach
- Anweisung. Es spielt keine Rolle, denn wir sind auflisten über unsere.Select(r => r[dc])
so oder so innerhalb der Schleife (genaustring.Join
macht das für uns), die Ergebnisse, bevor wir zu nächsten iteration - was wir erfassen, wird sofort verwendet.Ihre Datei ist das fehlende System.Linq-namespace, fügen Sie einfach
using System.Linq;
.Genial! Ich danke Ihnen vielmals. Leider kann ich nicht abstimmen, das bis noch.
Tolles Beispiel +1 krank werden, mit diesem in die Zukunft.
Ich sah Sie ausgewählt haben, deklarieren Sie die Spalte als var im Gegensatz zu DataColumn, ist das eine Frage des persönlichen Geschmacks/Stils oder gibt es ein Problem mit der Programmierung, wie so
foreach (DataColumn column in temperature.Columns) { string s = string.Join(", ", temperature.Rows.OfType<DataRow>().Select(r => r[column])); // do whatever you need with s now}
InformationsquelleAutor k.m
Den link den du gepostet hast, klar
- und das ist das, was passiert ist. Erhalten Sie die Spaltennamen.
InformationsquelleAutor amit_g
Könnte dies helfen: So konvertieren Sie eine DataTable an ein string in C#?
InformationsquelleAutor Priyank