2014-01-11 2 views
-2

У меня есть два DataTables следующимКак слить два datatables в C#?

Table1

-------------------------------- 
Id  | SrNo | Skill | Desc 
----------------------------- 
1  | 1.  | Social -- 
2  | 1.1 | Emotional -- 
3  | 1.2 | Teaching -- 
4  | 2.1 | Values -- 
5  | 2.2 | Attitude -- 

TABLE2

------------------ 
Grade | Remarks 
------------------- 
A  | -- 
B  | -- 
C  | -- 

Ожидаемый результат

-------------------------------------------------------- 
Id  | SrNo | Skill | Desc | Grade | Remarks 
-------------------------------------------------------- 
1  | 1. | Social | -- | A  |  -- 
2  | 1.1 | Emotional | -- | B  |  -- 
3  | 1.2 | Teaching | --  | C  | -- 
4  | 2.1 | Values | -- | -- |  -- 
5  | 2.2 | Attitude | -- | -- |  -- 

Как я могу достичь этого в C#. Если кто-нибудь знает эту операцию таблицы данных, пожалуйста, поделитесь ..

+0

Нет такой вещи, как «таблица данных» на языке ООП, таком как C#. Это материал БД. Так о чем же вы говорите? –

+0

В объекте DataTable есть объект C# –

+0

http://msdn.microsoft.com/en-us/library/system.data.datatable.merge.aspx –

ответ

0

Вы можете использовать метод Merge

метод Merge используется для объединения двух DataTable объектов, которые имеют во многом схожие схемы. Слияние обычно используется в клиентском приложении для включения последних изменений из источника данных в существующий DataTable. Это позволяет клиентскому приложению обновить DataTable с последними данными из источника данных.

MSDN

Например:

 DataColumn col; 
     DataTable table1 = new DataTable(); 
     table1.PrimaryKey = new DataColumn[] { 
     col = table1.Columns.Add("slot_id") 
     }; 
     col.DataType = typeof(int); 
     col.Unique = true; 
     col = table1.Columns.Add("appointment_time"); 
     col = table1.Columns.Add("patient_name"); 
     col = table1.Columns.Add("patient_doctor"); 

     table1.Rows.Add(1, "0900", "George Michael"); 

     DataTable table2 = new DataTable(); 
     table2.PrimaryKey = new DataColumn[] { 
     col = table2.Columns.Add("slot_id") 
     }; 
     col.DataType = typeof(int); 
     col.Unique = true; 
    col = table2.Columns.Add("appointment_time"); 

     table2.Rows.Add(1, "0900"); 
     table2.Rows.Add(2, "1000"); 
     table2.Rows.Add(3, "1100"); 
     table2.Rows.Add(4, "1200"); 

    DataTable merged = new DataTable(); 
    merged.Merge(table1); 
    merged.Merge(table2); 
1

Там нет общих столбцов в таблице как ... Пожалуйста, дополнительно объяснить ваш запрос

1

Вы не имеете отношения с table1 и столом 2, кроме номера строки.

Если ваша программа удаляет строку из таблицы1, то как вы собираетесь объединить эти две таблицы без отношения?

Думаю, вам лучше начать с добавления отношений в первую очередь. Если у вас есть идентификатор первичного ключа в таблице 1, и вы можете добавить столбец идентификатора в таблице 2 с соответствующим идентификатором.

Затем вы можете использовать DataTable.Merge метод непосредственно

static DataTable GetTable2() 
{ 
    DataTable table = new DataTable(); 
    var colm= table.Columns.Add("ID", typeof(int)); 
    table.PrimaryKey = new DataColumn[] {colm }; 
    table.Columns.Add("B", typeof(string)); 
    table.Rows.Add(2, "B2"); 
    return table; 
} 


static DataTable GetTable1() 
{ 
    DataTable table = new DataTable(); 
    var colm= table.Columns.Add("ID", typeof(int)); 
    table.PrimaryKey = new DataColumn[] {colm }; 
    table.Columns.Add("A", typeof(string)); 
    table.Rows.Add(1, "A1"); 
    table.Rows.Add(2, "A2"); 
    return table; 
} 

var tbl = GetTable1(); 
tbl.Merge(GetTable2()); 

Результат:

ID A B 
1 A1 null 
2 A2 B2 
0

Попробуйте это.

DataColumn col; 
      DataTable table1 = new DataTable(); 
      table1.PrimaryKey = new DataColumn[] { 
        col = table1.Columns.Add("Id") 
     }; 
      col.Unique = true; 
      col = table1.Columns.Add("SrNo"); 
      col = table1.Columns.Add("Skill"); 
      col = table1.Columns.Add("Desc"); 

      table1.Rows.Add(1, "1.", "Social","--"); 
      table1.Rows.Add(2, "1.1", "Emotional", "--"); 
      table1.Rows.Add(3, "1.2", "Teaching ", "--"); 
      table1.Rows.Add(4, "2.1", "Values", "--"); 
      table1.Rows.Add(5, "2.2", "Attitude", "--"); 


      DataTable table2 = new DataTable(); 
      table2.PrimaryKey = new DataColumn[] { 
     col = table2.Columns.Add("Id") 
     }; 
      col.Unique = true; 
      col = table2.Columns.Add("Grade"); 
      col = table2.Columns.Add("Remarks"); 
      table2.Rows.Add(1,"A","--"); 
      table2.Rows.Add(2,"B","--"); 
      table2.Rows.Add(3,"C","--"); 

      table1.Merge(table2); 
Смежные вопросы