【问题标题】:Linq - Sum with isnullLinq - 与 isnull 相加
【发布时间】:2015-09-14 10:54:45
【问题描述】:

我想将以下查询转换为 Linq:-

select SUM(isnull(day1,0)+isnull(day2,0)) as TCount from CALC

所以我这样做了:-

double total = ctx.tblCALC.Sum(m=>m.day1 + m.day2);

我无法理解第一个查询中的 isnull 部分。任何人都可以解释以及如何在 Linq 中制作它。

【问题讨论】:

  • ISNULL() 是检查给定的列值,如果列值为null,则将其替换为0
  • SQL 中的 ISNULL 函数需要两个参数,一个是您要检查其是否具有 NULL 值的字段名称,第二个是替换值,即该值是否为 NULL然后返回第二个参数。所以语句 ISNULL(day1,0) 表示如果 day1 为空,则返回 0。

标签: sql asp.net-mvc linq


【解决方案1】:

您可以使用Null Coalesce 运算符,前提是您的day1day2 在服务器端代码中应该可以为空:-

double total = ctx.tblCALC.Sum(m=>m.day1 ?? 0 + m.day2 ?? 0);

ISNULL 在 Sql Server 中:-

用指定的替换值替换NULL

我们在 C# 中使用空合并运算符来做同样的事情。

【讨论】:

  • ?? cannot be applied to operands of type double 收到此错误。
  • @Anup - 是的,显然它们在您的服务器代码中应该可以为空,即它的数据类型应该是 double?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-24
  • 1970-01-01
  • 2010-09-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多