我想减去两个数据表。我想要的是在Image下面。
我有以下代码,我在最后一点堆叠。这是我想在代码中做的事情。
当我点击Button1时,它会将当前数据输入firstDsData。几秒钟后,当我点击Button2时,它会将当前数据上传到secondDsData并将它们合并在一起。然后他们将合并到FinalDsData中。差异数据表将从finaldsdata获得更改。
问题出在最后一节。 FinalDsData.GetChanges()不起作用。它说nullreferenceexception。我也尝试使用RowState.Unchanged / Modified()进行更改。他们也没有工作。
virtual-hyperscript
答案 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?