2

我正在尝试使用 linq group by 查找两个表之间的金额差异。有两个名为 TabA 和 TabB 的表。两个表具有相同的结构和主键。主键是:Curr 和 Dept。

在此处输入图像描述

预期结果:

在此处输入图像描述

差异 = TabA.Amt- TabB.Amt

我尝试了以下部分代码:

var q = from row in TabA.AsEnumerable().Concat(TabB.AsEnumerable())
        group row by new
        {
               currency = row.Field<String>("Curr"),
               dept = row.Field<String>("Dept")
        }into matches
        select new
        {
               currency = matches.Key.currency,
               dept = matches.Key.dept,
               // diff = Amount Difference
        };

感谢您的解决方案:

4

1 回答 1

1
diff = matches.First().Field<decimal?>("Amt") - 
       matches.Skip(1).First().Field<decimal?>("Amt")

要处理空元素,我们需要遵循一些规则。diff但是,当两个操作数之一(或两者)为空时,上面的代码将变为空。

更新

要使用 的0默认值Amt,您可以使用如下方法GetValueOrDefault()

diff = matches.First().Field<decimal?>("Amt").GetValueOrDefault() - 
       matches.Skip(1).First().Field<decimal?>("Amt").GetValueOrDefault()
于 2013-11-08T18:33:32.977 回答