C#でDataTableを作成する方法と行を追加する方法


196

C#でDataTableを作成するにはどうすればよいですか?

私はこれが好きでした:

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

DataTableの構造を確認するにはどうすればよいですか?

今、私は追加したいラヴィのためNameおよび500のためにMarks。これどうやってするの?


2
@可愛い。単なるコメント-.NET 3.5を使用している場合は、LINQ to SQLが提供する機能を実際に確認する必要があります。DataTable / DataSetルートを下る場合は、少なくとも強く型付けされたDataTableを作成することを検討してください。
RichardOD

回答:


256

これがコードです:

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);

構造を確認するには、つまりスキーマとして言い換えると、次のようにしてXMLファイルにエクスポートできます。

スキーマ/構造のみをエクスポートするには、次のようにします。

dt.WriteXMLSchema("dtSchemaOrStructure.xml");

さらに、データをエクスポートすることもできます。

dt.WriteXML("dtDataxml");

8
DataTableクラスにはAddRowメソッドがありません。dt.Rows.Add(_ravi);を実行する必要があります。代わりに
Salamander2007、

1
そして、AddRowのようなものはありません。それはDataTable.Rows.Add()です
djdd87

CurrentRows以外のフィルターでDataViewを使用する場合は、dt.AcceptChanges()を呼び出すことを忘れないでください。
Salamander2007

@ DanD、@ Salamander2007:同意。今交換しました。私はこのことをサポートする型指定されたデータセットを使用してbcozに起こった間違いを恐れてください。
これ。__curious_geek

@phoenix:質問者に私の回答と楽しく関わってほしかった。
これ。__curious_geek

65

次のように、オブジェクト配列を渡すこともできます。

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

あるいは:

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

11
これに関する別の代替策Addは、上記のメソッドに可変数のパラメーターを持つオーバーロードがあることに注意することです。そのため、これをに短縮しdt.Rows.Add("Ravi", 500);て同じように機能させることができます。これらのいずれかのアプローチでの1つの大きな警告:これらのパラメーターは、列が定義された順序とまったく同じ順序で指定する必要があります。そうしないと、エラーが発生します。(そのため、慎重に使用してください!)
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

DataTableを作成します。

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

テーブルに列を追加:

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

DataTableメソッド1に行を追加します。

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

DataTableメソッド2に行を追加します。

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

DataTableメソッド3に行を追加します(同じ構造で別のテーブルから行を追加します):

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

DataTableメソッド4に行を追加(別のテーブルから行を追加):

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

DataTableメソッド5(インデックスに行を挿入)に行を追加します。

MyTable.Rows.InsertAt(row, 8);

24

行を追加するには:

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

構造を確認するには:

Table.Columns

18

4行の代わりにDataRow.Add(params object [] values)を使用して1つのライナーを書くことができます。

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

新しいDataTableオブジェクトを作成するとき、次のステートメントで必要がないようClear DataTableです。DataTable.Columns.AddRangeonステートメントを使用して列を追加することもできます。完全なコードになります。

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

14

1行で行を追加できます

    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

このためには、データテーブルにデータ行を追加する必要があります。

// 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

最も簡単な方法は、現時点でDtaTableを作成することです

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

4

他の回答に加えて。

DataTableの構造を制御する場合、行を追加するためのショートカットがあります。

// dt dt.Rows.Add( "Name"、 "Marks");という名前の例のように定義されたデータテーブルがあると想定します。

DataRowCollection.Add()メソッドには、オブジェクトのparam配列を受け取るオーバーロードがあります。このメソッドを使用すると、必要な数の値を渡すことができますが、それらの値は、テーブルで定義されている列と同じ順序である必要があります。

したがって、これは行データを追加する便利な方法ですが、使用するのは危険な場合があります。テーブル構造が変更されると、コードは失敗します。


1

質問1:C#でDataTableを作成するにはどうすればよいですか?

回答1:

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

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

注:する必要はありません、それを作成した後。Clear()DataTable

質問2:行を追加する方法は?

回答2: 1行追加します。

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

複数の行を追加:ForEachループを使用

DataTable dt2 = (DataTable)Session["CartData"]; // This DataTable contains multiple records
foreach (DataRow dr in dt2.Rows)
{
    dt.Rows.Add(dr["Name"], dr["Marks"]);
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.