簡體   English   中英

合並兩個數據表?

[英]Merge two datatables?

我想合並兩個數據表,其中列“ ID ”作為兩個表中的主鍵

注意:這兩個表都有兩列,分別為“ ID、名稱”和“ ID、名稱”,其中名稱和名稱區分大小寫。

:1

在此處輸入圖像描述

:2

在此處輸入圖像描述

預期的合並表結果:

在此處輸入圖像描述

代碼:

    public MainWindow()
    {
        InitializeComponent();

        // Table 1
        DataTable table1 = new DataTable();
        table1.Columns.Add("ID", typeof(int));
        table1.Columns.Add("Name", typeof(String));
        table1.PrimaryKey = new DataColumn[] { table1.Columns["ID"] };
        table1.Rows.Add(1, "A");
        table1.Rows.Add(4, "D");
        table1.Rows.Add(5, "E");

        // Table 2
        DataTable table2 = new DataTable();
        table2.Columns.Add("ID", typeof(int));
        table2.Columns.Add("name", typeof(String));
        table2.PrimaryKey = new DataColumn[] { table2.Columns["ID"] };
        table2.Rows.Add(1, "A");
        table2.Rows.Add(2, "B");
        table2.Rows.Add(3, "C");
        table2.Rows.Add(5, "E");

        table1.Merge(table2);
    }

請幫助我實現這個預期的結果。

您可以暫時更改第二列的名稱並仍然使用Merge

const string OriginalName = "name";
const string TemporaryName = "temp";
table2.Columns[OriginalName].ColumnName = TemporaryName;
table1.Merge(table2);
table1.Columns[TemporaryName].ColumnName = OriginalName;
table2.Columns[TemporaryName].ColumnName = OriginalName;

用這個:

DataTable dtResult = new DataTable();
dtResult.Columns.Add("ID", typeof(int));
dtResult.Columns.Add("Name", typeof(string));
dtResult.Columns.Add("name", typeof(string));



var result = from dataRows1 in table1.AsEnumerable()
     join dataRows2 in table2.AsEnumerable()
     on dataRows1.Field<int>("ID") equals dataRows2.Field<int>("ID") 
     into rows
     from row in rows.DefaultIfEmpty()
     select dtResult.LoadDataRow(new object[]
     {
        dataRows1.Field<int>("ID"),
        dataRows1.Field<string>("Name"),
        dataRows2.Field<string>("name")
      }, false);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM