我有一个要查询的表。每次付款都有一个总数和一个表示费用的负数。此刻,我的查询没有带负数就提取了所需的查询。

通过最近得到的更改,我不仅需要选择正数,还需要将正数和负数相加在一起,以使单个表中的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/

10-12 14:21