首页 > 解决方案 > 简化 LINQ - 使用两个不同的 where 子句对 Col 求和两次

问题描述

我有以下片段,它需要两次往返 DB,因为 where 子句不同。

public string OutStanding(string PC)
{
    var d = _context.MyTable.Where(w => w.debit == PC).Sum(s => s.amount);
    var c = _context.MyTable.Where(w => w.credit == PC).Sum(s => s.amount);
    return (d - c).ToString();
}

可以简化为到 DB 的一次往返吗?

标签: c#linq

解决方案


您可以应用查询并稍后提取

public string OutStanding(string PC) {
    var myTable =_context.MyTable.Where(w => w.debit == PC || w.credit == PC).ToList();
    var d = myTable.Where(w => w.debit == PC).Sum(s => s.amount);
    var c = myTable.Where(w => w.credit == PC).Sum(s => s.amount);
    return (d - c).ToString(); 
}

推荐阅读