c# - 简化 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 的一次往返吗?
解决方案
您可以应用查询并稍后提取
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();
}
推荐阅读
- java - 将复杂的soap xml请求转换为php数组以将其作为nusoap_client中的参数传递
- javascript - 用车把中的空白替换
- c++ - 如何在 C++ 中展平字典
- c# - 如何在 C# 中调用 Web API 而不等待响应
- python - Python串行模块打印空行
- java - Qulice - 如何在整个项目中禁用需要 package-info.java 的规则?
- sql - 截至 2018 年,在 Postgres 中使用 bigint 而不是 int 作为主键是否有任何性能差异?
- ocaml - 从函数构建序列
- android - libEGL:加载 WebView 时 validate_display:255 错误 3008 (EGL_BAD_DISPLAY)
- entity-framework - EF Core Code First - 聚集索引和标识列