我有两个从数据库填充的数据表。这两个DataGrid具有相同的架构,但是Qty
列中的数据不同。我想从第一列减去第二列DataTable的QTY
列的值,然后将其存储到第三列DataTable中。
下面是我的第一个数据表的代码。
DataTable newDt1 = dt_1.AsEnumerable()
.GroupBy(r => r.Field<int>("batch_num"))
.Select(g =>
{
var row = dt_1.NewRow();
row["batch_num"] = g.Key;
row["qty"] = g.Sum(r => Convert.ToInt32(r.Field<int>("qty")));
return row;
})
.CopyToDataTable();
第二个DataTable具有与上面相同的代码,只是正在使用新值进行更新。
答案 0 :(得分:0)
我试图在控制台应用程序中创建您的方案。以下代码将帮助您开发解决方案。
DataTable dt1 = new DataTable();
dt1.Columns.Add("BatchNo");
dt1.Columns.Add("Qty");
DataTable dt2 = new DataTable();
dt2.Columns.Add("BatchNo");
dt2.Columns.Add("Qty");
for (int i = 0; i < 5; i++)
{
dt1.Rows.Add(i + 1, i + 2);
dt2.Rows.Add(i + 1, i + 3);
}
var result = dt1.AsEnumerable()
.Join(dt2.AsEnumerable(), d1 => d1["BatchNo"], d2 => d2["BatchNo"], (d1, d2) => new { D1 = d1, D2 = d2 })
.Select(r => new
{
BatchNo = Convert.ToInt32( r.D1["BatchNo"] ),
QtyDifference = Convert.ToInt32(r.D2["Qty"]) - Convert.ToInt32(r.D1["Qty"])
});