如何减去两个数据表?

时间:2016-04-07 17:25:36

标签: c# .net winforms datatable

我想减去两个数据表。我想要的是在Image下面。

Here is the Image

我有以下代码,我在最后一点堆叠。这是我想在代码中做的事情。

当我点击Button1时,它会将当前数据输入firstDsData。几秒钟后,当我点击Button2时,它会将当前数据上传到secondDsData并将它们合并在一起。然后他们将合并到FinalDsData中。差异数据表将从finaldsdata获得更改。

问题出在最后一节。 FinalDsData.GetChanges()不起作用。它说nullreferenceexception。我也尝试使用RowState.Unchanged / Modified()进行更改。他们也没有工作。

virtual-hyperscript

1 个答案:

答案 0 :(得分:1)

如果您的唯一目标是在网格上显示更改,那么您可以使用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,请参阅Convert select new to DataTable?