我有一个正在查询的表。每笔付款都有一个总数和一个代表费用的负数。目前,我的查询提取了所需的查询,没有负数。
根据我最近所做的更改,我需要的不仅仅是选择正数,而是将正数和负数添加到单个表中与 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/