2016-06-20 11 views
0

Ich habe ein Array.Wie man Array zu DataTable speichert?

Ich speichere dieses Array zu DataTable.

Mein Code wie:

string[] myResult; 
DataTable dt = new DataTable(); 
dt.Columns.Add("myCategory"); 
for (int i = 0; i < myResult.Length; i++) 
{ 
    DataRow row = dt.NewRow(); 
    row[0] = myResult[i]; 
    dt.Rows.Add(row); 
} 

Meine Datentabelle wie:

myCategory: 
-+-+-+-+-+-+-+-+-+- 
    Student 
    Micheal 
    7.5 
    9.5 
    6.5 

Aber ich will diese speichern wie:

Category   Name   Score 1   Score 2   Score 3 
Student   Micheal   7.5    9.5    6.5 

Wie Spalten wie folgt hinzuzufügen.

+1

Wie sieht dieses Array aus? Sie müssen so viele Spalten hinzufügen, wie Sie in Ihrer Datentabelle benötigen. –

+1

Sie können der Datentabelle Spalten wie folgt hinzufügen: dt.Columns.Add ("Group", typeof (string)); –

Antwort

1

Sie weisen der ersten Spalte immer den Wert row[0] zu. Vielleicht möchten Sie eine Tabelle mit einem einzigen DataRow erstellen:

string[] myResult; // initialize .... 

DataTable dt = new DataTable(); 
foreach(string s in myResult) 
    dt.Columns.Add(); // or a named column, but you haven't provided any informations 

DataRow row = dt.Rows.Add(); // already added 
for (int i = 0; i < myResult.Length; i++) 
    row.SetField(i, myResult[i]); 

DataColumnCollection.Add() fügt Spalten mit einem Standardnamen ("Column1", "Column2", ...).

+0

Es funktioniert für mich. – vanloc

+0

@ VănLộc Sie sollten eine Klasse erstellen, um ein sauberer Code zu sein. Mehr als ein Datensatz, wäre es schwer zu handhaben –

+0

Danke, @TripleK. Dies sollte wie Ihr Kommentar zu reinigen – vanloc

1

Sie benötigen mehr Spalten und Sie sollten auch Ihre neue Zeile nach der Schleife zu Ihrem dt hinzufügen. So sollte das sein, was Sie wollen:

string[] myResult = {"Student" , "Micheal" , "7.5" , "9.5" , "6.5"}; 
DataTable dt = new DataTable(); 
dt.Columns.Add("myCategory"); 
dt.Columns.Add("Name"); 
dt.Columns.Add("Score 1"); 
dt.Columns.Add("Score 2"); 
dt.Columns.Add("Score 3"); 
DataRow row = dt.NewRow(); 

for (int i = 0; i < myResult.Length; i++) 
{ 
    row[i] = myResult[i];  
} 

dt.Rows.Add(row); 

Das Ergebnis wird in einem DataGridView:

Result

+0

Vielen Dank. – vanloc

1

Erstellen Sie eine Klasse Code löschen

class MyResult 
{ 
    public String Category { get; set; } 
    public String Name { get; set; } 
    public float Score1 { get; set; } 
    public float Score2 { get; set; } 
    public float Score3 { get; set; } 

} 

Schreiben Sie den Code unten in deiner Funktion.

List<MyResult> result = new List<MyResult>(); 
MyResult r1 = new MyResult 
{ 
    Category = "Student", 
    Name = "Micheal", 
    Score1 = 7.5f, 
    Score2 = 9.5f, 
    Score3 = 6.5f 
}; 

result.Add(r1); 

DataTable dt = new DataTable(); 
dt.Columns.Add("Category"); 
dt.Columns.Add("Name"); 
dt.Columns.Add("Score1"); 
dt.Columns.Add("Score2"); 
dt.Columns.Add("Score3"); 


foreach (MyResult item in result) 
{ 
    DataRow row = dt.NewRow(); 
    row["Category"] = item.Category; 
    row["Name"] = item.Name; 
    row["Score1"] = item.Score1; 
    row["Score2"] = item.Score2; 
    row["Score3"] = item.Score3; 
    dt.Rows.Add(row); 
}