簡體   English   中英

如何減去兩個數據表?

[英]how to subtract two datatables?

我想減去兩個數據表。 我想要的是下面的圖像。

這是圖像

我有以下代碼,我在最后一點疊加了。 這是我想在代碼中執行的操作。

當我單擊Button1時,它將把當前數據放入firstDsData中。 幾秒鍾后,當我單擊Button2時,它將把當前數據上傳到secondDsData並將其合並在一起。 然后它們將合並到FinalDsData中。 差異數據表將從finaldsdata獲得更改。

問題在最后一部分。 FinalDsData.GetChanges()不起作用。 它說nullreferenceexception。 我還嘗試使用RowState.Unchanged / Modified()進行更改。 他們也沒有工作。

    DataTable firstDsData = new DataTable();
    DataTable secondDsData = new DataTable();
    DataTable finalDsData = new DataTable();
    DataTable DifferenceDataTable = new DataTable();

    private void Form1_Load(object sender, EventArgs e)
    {
        this.dataTable1TableAdapter.Fill(this.dataWE.DataTable1);
    }

    private void button1_Click(object sender, EventArgs e)
    {
        firstDsData = dataTable1TableAdapter.GetData();

    }

    private void button2_Click(object sender, EventArgs e)
    {
        secondDsData = dataTable1TableAdapter.GetData();

        finalDsData.Merge(firstDsData);
        finalDsData.AcceptChanges();
        finalDsData.Merge(secondDsData); //Until here i can get data into finalDsData. No Problem.
        DifferenceDataTable = finalDsData.GetChanges(); // Problem in here.Nullreferenceexception
        ultraGrid2.SetDataBinding(DifferenceDataTable, DifferenceDataTable.TableName);
    }

如果您的唯一目標是在網格上顯示更改,則可以使用LINQ查找兩個表之間的差異,例如:

var changes = (from dr1 in firstDsData.AsEnumerable()
    from dr2 in secondDsData.AsEnumerable()
    where dr1.Field<string>("Name") == dr2.Field<string>("Name")
    select new
    {
        Name = dr1.Field<string>("Name"),
        Value = dr1.Field<decimal>("Value") - dr2.Field<decimal>("Value")
    }).ToList();

要將其顯示到網格中,您可以執行以下操作:

ultraGrid2.DataSource = changes;

如果需要輸出DataTable表,則可以將LINQ結果轉換為DataTable ,請參見將新數據轉換為數據表?

暫無
暫無

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

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