【发布时间】:2019-11-18 01:31:49
【问题描述】:
我有两个List<AccountBalance>
AccountBalance 有一个 ID GUID 和一个 Balance DECIMAL 值。
一个清单包含所有贷方,一个清单包含所有借方。这些已被求和,因此列表中会有唯一的帐户 ID(但会相互重复。即,一个帐户将在 creditBalances 中出现一次,但可能会在两个列表中找到。 p>
var creditBalances = new List<AccountBalance>();
var debiBalances = new List<AccountBalance>();
我需要做的是返回一个列表,其中包含每个帐户的总数。
所以,我需要根据两个表的 ID 进行联接...对于每个帐户,在贷方中添加金额,并在借方中减去金额。
并非所有帐户都有贷方,也不是所有帐户都有借方,但我的结果集需要包含所有帐户。
我正在尝试什么:
var result = creditBalances
.Join(debitBalances, a => a.ExternalId, b => b.ExternalId, (a, b) => new AccountBalance { Id = a.ExternalId, Balance = a.amount - b.amount })
.ToList();
但这似乎是一个 INNER 连接,并且只给我“creditBalances”有值的结果。我基本上需要做一个交叉连接?
学分:
Acc: 1, amount 10
Acc: 2, amount 5
借记:
Acc 2: amount 2
Acc 3: amount 5
应该导致:
Acc 1: 10
Acc 2: 3
Acc 3: -5
【问题讨论】:
-
这能回答你的问题吗? LINQ - Full Outer Join