Como criar um DataTable em C # e como adicionar linhas?

196

Como criar uma DataTable em c #?

Eu fiz assim:

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

Como vejo a estrutura do DataTable?

Agora eu quero adicionar ravi para Namee 500 para Marks. Como posso fazer isso?

Fofa
fonte
2
@Fofa. Apenas um comentário - se você estiver usando o .NET 3.5, deverá realmente ver o que o LINQ to SQL oferece. Se você decidir seguir a rota DataTable / DataSet, procure pelo menos criar DataTables fortemente tipadas.
RichardOD

Respostas:

256

Aqui está o código:

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

Para ver a estrutura, ou melhor, eu a reformularia como esquema, você pode exportá-la para um arquivo XML, fazendo o seguinte.

Para exportar apenas o esquema / estrutura, faça:

dt.WriteXMLSchema("dtSchemaOrStructure.xml");

Além disso, você também pode exportar seus dados:

dt.WriteXML("dtDataxml");
isto. __curious_geek
fonte
8
A classe DataTable não possui o método AddRow. Você precisa fazer o dt.Rows.Add (_ravi); em vez
Salamander2007
1
E não existe o AddRow. É DataTable.Rows.Add ()
djdd87 25/06/2009
Não se esqueça de chamar dt.AcceptChanges () caso você use o DataView com outro filtro que não seja CurrentRows.
Salamander2007
@ DanD, @ Salamander2007: concordou. Eu mudei agora. Sry pelo erro, que aconteceu bcoz Eu uso conjuntos de dados digitados que suportam essa coisa.
isso. __curious_geek
@ Phoenix: Eu só queria que a pessoa que fez a pergunta se relacionasse alegremente com a minha resposta.
isso. __curious_geek
65

Você também pode transmitir uma matriz de objetos, assim:

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

Ou até:

dt.Rows.Add(new object[] { "Ravi", 500 });
James McConnell
fonte
11
Outra alternativa é observar que o Addmétodo mostrado acima tem uma sobrecarga com número variável de parâmetros, portanto você pode reduzi-lo dt.Rows.Add("Ravi", 500);e trabalhar o mesmo. Um grande aviso com uma dessas abordagens: você deve fornecer esses parâmetros exatamente na mesma ordem em que as colunas foram definidas, caso contrário, você receberá um erro. (Portanto, use com cuidado!)
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();
shahnawaz
fonte
29

Criar DataTable:

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

Adicione coluna à tabela:

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

Adicione linha ao método 1 da DataTable:

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

Adicione linha ao método 2 da DataTable:

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

Adicione linha ao método DataTable 3 (adicione linha de outra tabela pela mesma estrutura):

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

Adicione linha ao método DataTable 4 (adicione linha de outra tabela):

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

Adicione linha ao método DataTable 5 (Inserir linha em um índice):

MyTable.Rows.InsertAt(row, 8);
Hamed Naeemaei
fonte
24

Para adicionar uma linha:

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

Para ver a estrutura:

Table.Columns
djdd87
fonte
18

Você pode escrever um liner usando DataRow.Add (valores de objeto de parâmetro []) em vez de quatro linhas.

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

À medida que você cria um novo DataTableobjeto, parece não haver necessidade Clear DataTablena próxima declaração. Você também pode usar DataTable.Columns.AddRangepara adicionar colunas com na instrução O código completo seria.

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

Você pode adicionar linha em uma única linha

    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);
Diego
fonte
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();
Mohammed Shafi Adem
fonte
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();
kavitha Reddy
fonte
8

Você precisa adicionar datarows à sua tabela de dados para isso.

// 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 );
rahul
fonte
8

A maneira mais fácil é criar uma DtaTable a partir de agora

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

Além das outras respostas.

Se você controlar a estrutura do DataTable, há um atalho para adicionar linhas:

// Suponha que você tenha uma tabela de dados definida como no seu exemplo chamado dt dt.Rows.Add ("Name", "Marks");

O método DataRowCollection.Add () possui uma sobrecarga que requer uma matriz param de objetos. Esse método permite passar tantos valores quanto necessário, mas eles devem estar na mesma ordem em que as colunas são definidas na tabela.

Portanto, embora seja uma maneira conveniente de adicionar dados de linha, pode ser arriscado usar. Se a estrutura da tabela mudar, seu código falhará.

Rune Grimstad
fonte
1

Pergunta 1: Como criar um DataTable em C #?

Resposta 1:

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

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

Nota: Não há necessidadeClear()doDataTabledepois de criá-la.

Pergunta 2: Como adicionar linhas?

Resposta 2: adicione uma linha:

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

Adicionar várias linhas: use ForEachloop

DataTable dt2 = (DataTable)Session["CartData"]; // This DataTable contains multiple records
foreach (DataRow dr in dt2.Rows)
{
    dt.Rows.Add(dr["Name"], dr["Marks"]);
}
5377037
fonte