我有一个要查询的表。每次付款都有一个总数和一个表示费用的负数。此刻,我的查询没有带负数就提取了所需的查询。
通过最近得到的更改,我不仅需要选择正数,还需要将正数和负数相加在一起,以使单个表中的batchId匹配。
我已经工作了几个小时,而我尝试的所有事情最终都将对查询中的所有内容进行求和,而不仅仅是批处理ID匹配的负数和正数。
请帮忙。以下是我的查询,这是我要加总的金额列。
左边的示例数据,右边的我想要的
batchId Amount batchId Amount
1 2.23 1 1.00
1 -1.23 2 3.00
2 5.43m 3 4.00
2 -2.43
3 6.60
3 -3.60
IQueryable<BatchPayment> query = _db
.BatchPayments
.Where(
bp => ValidBatchStatuesIds.Contains(bp.Batch.BatchStatusId)
&& (!OnlineBatchTypes.Contains(bp.Batch.BatchTypeId)
|| (OnlineBatchTypes.Contains(bp.Batch.BatchTypeId) && bp.Amount > 0.00m))
);
最佳答案
试试看(为进行正确的验证,我跳过了不相关的条件):
var result = _db.BatchPayments
.GroupBy(p=> p.BatchId)
.Select(p=> new { BatchId = p.Key, Amount = p.Sum(q=> q.Amount)})
.ToList();
foreach (var batch in result)
{
Console.WriteLine("BatchId = {0} Amount={1}", batch.BatchId, batch.Amount);
}
关于c# - IQueryable求和两个唯一ID匹配C#的数量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41913228/