Wie erstelle ich eine DataTable in C # und füge Zeilen hinzu?


196

Wie erstelle ich eine DataTable in C #?

Mir hat das gefallen:

 DataTable dt = new DataTable();
 dt.clear();
 dt.Columns.Add("Name");
 dt.Columns.Add("Marks");

Wie sehe ich die Struktur von DataTable?

Jetzt möchte ich Ravi für Nameund 500 für hinzufügen Marks. Wie kann ich das machen?


2
@Niedlich. Nur ein Kommentar - wenn Sie .NET 3.5 verwenden, sollten Sie wirklich sehen, was LINQ to SQL bietet. Wenn Sie sich für die DataTable / DataSet-Route entscheiden, sollten Sie zumindest DataTables erstellen, die stark typisiert sind.
RichardOD

Antworten:


256

Hier ist der Code:

DataTable dt = new DataTable(); 
dt.Clear();
dt.Columns.Add("Name");
dt.Columns.Add("Marks");
DataRow _ravi = dt.NewRow();
_ravi["Name"] = "ravi";
_ravi["Marks"] = "500";
dt.Rows.Add(_ravi);

Um die Struktur zu sehen, oder besser gesagt, ich würde sie als Schema umformulieren, können Sie sie wie folgt in eine XML-Datei exportieren.

Gehen Sie folgendermaßen vor, um nur das Schema / die Struktur zu exportieren:

dt.WriteXMLSchema("dtSchemaOrStructure.xml");

Darüber hinaus können Sie Ihre Daten auch exportieren:

dt.WriteXML("dtDataxml");

8
Die DataTable-Klasse verfügt nicht über die AddRow-Methode. Sie müssen dt.Rows.Add (_ravi) ausführen; stattdessen
Salamander2007

1
Und AddRow gibt es nicht. Es ist DataTable.Rows.Add ()
djdd87

Vergessen Sie nicht, dt.AcceptChanges () aufzurufen, wenn Sie DataView mit einem anderen Filter als CurrentRows verwenden.
Salamander2007

@DanD, @ Salamander2007: vereinbart. Ich habe es jetzt geändert. Sry für den Fehler, der passiert ist, weil ich typisierte Datensätze verwende, die diese Sache unterstützen.
das. __curious_geek

@phoenix: Ich wollte nur, dass der Fragesteller glücklich mit meiner Antwort in Verbindung steht.
das. __curious_geek

65

Sie können auch ein Objektarray übergeben, wie folgt:

DataTable dt = new DataTable();
dt.Clear();
dt.Columns.Add("Name");
dt.Columns.Add("Marks");
object[] o = { "Ravi", 500 };
dt.Rows.Add(o);

Oder auch:

dt.Rows.Add(new object[] { "Ravi", 500 });

11
Eine andere Alternative besteht darin, zu beachten, dass die Addoben gezeigte Methode eine Überladung mit variabler Anzahl von Parametern aufweist, sodass Sie diese verkürzen können dt.Rows.Add("Ravi", 500);und dasselbe funktionieren würden. Eine große Warnung bei beiden Ansätzen: Sie müssen diese Parameter in genau derselben Reihenfolge angeben, in der die Spalten definiert wurden. Andernfalls wird eine Fehlermeldung angezeigt. (Also mit Vorsicht verwenden!)
Funka

34
// Create a DataTable and add two Columns to it
DataTable dt=new DataTable();
dt.Columns.Add("Name",typeof(string));
dt.Columns.Add("Age",typeof(int));

// Create a DataRow, add Name and Age data, and add to the DataTable
DataRow dr=dt.NewRow();
dr["Name"]="Mohammad"; // or dr[0]="Mohammad";
dr["Age"]=24; // or dr[1]=24;
dt.Rows.Add(dr);

// Create another DataRow, add Name and Age data, and add to the DataTable
dr=dt.NewRow();
dr["Name"]="Shahnawaz"; // or dr[0]="Shahnawaz";
dr["Age"]=24; // or dr[1]=24;
dt.Rows.Add(dr);

// DataBind to your UI control, if necessary (a GridView, in this example)
GridView1.DataSource=dt;
GridView1.DataBind();

29

Datentabelle erstellen:

DataTable MyTable = new DataTable(); // 1
DataTable MyTableByName = new DataTable("MyTableName"); // 2

Spalte zur Tabelle hinzufügen:

 MyTable.Columns.Add("Id", typeof(int));
 MyTable.Columns.Add("Name", typeof(string));

Zeile zur DataTable-Methode 1 hinzufügen:

DataRow row = MyTable.NewRow();
row["Id"] = 1;
row["Name"] = "John";
MyTable.Rows.Add(row);

Zeile zur DataTable-Methode 2 hinzufügen:

MyTable.Rows.Add(2, "Ivan");

Hinzufügen einer Zeile zur DataTable-Methode 3 (Hinzufügen einer Zeile aus einer anderen Tabelle mit derselben Struktur):

MyTable.ImportRow(MyTableByName.Rows[0]);

Zeile zur DataTable-Methode 4 hinzufügen (Zeile aus einer anderen Tabelle hinzufügen):

MyTable.Rows.Add(MyTable2.Rows[0]["Id"], MyTable2.Rows[0]["Name"]);

Zeile zur DataTable-Methode 5 hinzufügen (Zeile an einem Index einfügen):

MyTable.Rows.InsertAt(row, 8);

24

So fügen Sie eine Zeile hinzu:

DataRow row = dt.NewRow();
row["Name"] = "Ravi";
row["Marks"] = 500;
dt.Rows.Add(row);

So sehen Sie die Struktur:

Table.Columns

18

Sie können einen Liner mit DataRow.Add (params object [] values) anstelle von vier Zeilen schreiben .

dt.Rows.Add("Ravi", "500");

Wenn Sie ein neues DataTableObjekt erstellen , scheint dies in der nächsten Anweisung nicht erforderlich zu sein Clear DataTable. Sie können auch DataTable.Columns.AddRangeSpalten mit der Anweisung on hinzufügen. Vollständiger Code wäre.

DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[] { new DataColumn("Name"), new DataColumn("Marks") });     
dt.Rows.Add("Ravi", "500");

14

Sie können Zeile in einer einzelnen Zeile hinzufügen

    DataTable table = new DataTable();
    table.Columns.Add("Dosage", typeof(int));
    table.Columns.Add("Drug", typeof(string));
    table.Columns.Add("Patient", typeof(string));
    table.Columns.Add("Date", typeof(DateTime));

    // Here we add five DataRows.
    table.Rows.Add(25, "Indocin", "David", DateTime.Now);
    table.Rows.Add(50, "Enebrel", "Sam", DateTime.Now);
    table.Rows.Add(10, "Hydralazine", "Christoff", DateTime.Now);
    table.Rows.Add(21, "Combivent", "Janet", DateTime.Now);
    table.Rows.Add(100, "Dilantin", "Melanie", DateTime.Now);

11
DataTable dt=new DataTable();
Datacolumn Name = new DataColumn("Name");
Name.DataType= typeoff(string);
Name.AllowDBNull=false; //set as null or not the default is true i.e null
Name.MaxLength=20; //sets the length the default is -1 which is max(no limit)
dt.Columns.Add(Name);
Datacolumn Age = new DataColumn("Age", typeoff(int));`

dt.Columns.Add(Age);

DataRow dr=dt.NewRow();

dr["Name"]="Mohammad Adem"; // or dr[0]="Mohammad Adem";
dr["Age"]=33; // or dr[1]=33;
dt.add.rows(dr);
dr=dt.NewRow();

dr["Name"]="Zahara"; // or dr[0]="Zahara";
dr["Age"]=22; // or dr[1]=22;
dt.rows.add(dr);
Gv.DataSource=dt;
Gv.DataBind();

9
DataTable dt=new DataTable();
DataColumn Name = new DataColumn("Name",typeof(string)); 

dt.Columns.Add(Name);
DataColumn Age = new DataColumn("Age", typeof(int));`

dt.Columns.Add(Age);

DataRow dr=dt.NewRow();

dr["Name"]="Kavitha Reddy"; 
dr["Age"]=24; 
dt.add.Rows(dr);
dr=dt.NewRow();

dr["Name"]="Kiran Reddy";
dr["Age"]=23; 
dt.Rows.add(dr);
Gv.DataSource=dt;
Gv.DataBind();

8

Dazu müssen Sie Ihrer Datentabelle Datenzeilen hinzufügen.

// Creates a new DataRow with the same schema as the table.
DataRow dr = dt.NewRow();

// Fill the values
dr["Name"] = "Name";
dr["Marks"] = "Marks";

// Add the row to the rows collection
dt.Rows.Add ( dr );

8

Am einfachsten ist es, ab sofort eine DtaTable zu erstellen

DataTable table = new DataTable
{
    Columns = {
        "Name", // typeof(string) is implied
        {"Marks", typeof(int)}
    },
    TableName = "MarksTable" //optional
};
table.Rows.Add("ravi", 500);

4

Neben den anderen Antworten.

Wenn Sie die Struktur der DataTable steuern, gibt es eine Verknüpfung zum Hinzufügen von Zeilen:

// Angenommen, Sie haben eine Datentabelle wie in Ihrem Beispiel mit dem Namen dt dt.Rows.Add ("Name", "Marks") definiert.

Die DataRowCollection.Add () -Methode weist eine Überladung auf, die ein param-Array von Objekten akzeptiert. Mit dieser Methode können Sie so viele Werte wie nötig übergeben, diese müssen jedoch in derselben Reihenfolge vorliegen, in der die Spalten in der Tabelle definiert sind.

Dies ist zwar eine bequeme Möglichkeit, Zeilendaten hinzuzufügen, die Verwendung kann jedoch riskant sein. Wenn sich die Tabellenstruktur ändert, schlägt Ihr Code fehl.


1

Frage 1: Wie erstelle ich eine DataTable in C #?

Antwort 1:

DataTable dt = new DataTable(); // DataTable created

// Add columns in your DataTable
dt.Columns.Add("Name");
dt.Columns.Add("Marks");

Hinweis: Es gibt keine Notwendigkeit,Clear()dieDataTablenach der Erstellung.

Frage 2: Wie füge ich Zeilen hinzu?

Antwort 2: Fügen Sie eine Zeile hinzu:

dt.Rows.Add("Ravi","500");

Mehrere Zeilen hinzufügen: ForEachSchleife verwenden

DataTable dt2 = (DataTable)Session["CartData"]; // This DataTable contains multiple records
foreach (DataRow dr in dt2.Rows)
{
    dt.Rows.Add(dr["Name"], dr["Marks"]);
}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.