【问题标题】:SQLite null value - treat as zero in .NET calculationsSQLite 空值 - 在 .NET 计算中视为零
【发布时间】:2013-09-02 09:23:01
【问题描述】:

在 .NET 计算中将 SQLite 数据库中的空值视为零值的最有效方法是什么?我使用实体框架。

假设我有:

Dim result as Double
result = e_employee_salary * e_index

其中 e_employee_salary 和 e_index 以及 SQLite 数据库中的字段,但其中一个或两个可以为空,在这种情况下,我想在上述计算中将它们视为零值。

我正在寻找最有效的方法来做到这一点,因为这些计算出现在许多属性 getter 中并且被高频调用。

【问题讨论】:

  • 从查询/sql 的角度来看,为什么不能捕获空值?假设 isnull 是一个 SQLite 函数:当 isnull(column_name, 0) 为空时,它将始终返回 0(整数)。当 column 为空时,isnull(column_name, '0') 将始终返回 '0'(字符串)。只是一个建议。
  • 我使用的是实体框架而不是直接定义 sql 查询。我使用 LINQ to Entities 来读取数据。

标签: .net sqlite null zero


【解决方案1】:

我可能在你的问题上遗漏了一些东西,但我想说你可以使用

If(e_employee_salary, 0) * If(e_index, 0) // VB

(e_employee_salary ?? 0) * (e_index ?? 0) // C#

【讨论】:

  • 我收到一个设计时错误:'?'此处不能使用字符。那是 C#(我使用 VB.NET)。可以参考一些 MSDN 文档吗?
  • @user2143213:对不起。添加VB版本
【解决方案2】:

您可能有两种方法:使用编程语言,如@Claudio 或使用 SQLite 查询:

 SELECT IFNULL(e_employee_salary, 0.0), IFNULL(e_index, 0.0), ... FROM ...

这样您将始终从数据库中获取非空值。

【讨论】:

    猜你喜欢
    • 2014-03-29
    • 2016-07-12
    • 2020-02-12
    • 1970-01-01
    • 1970-01-01
    • 2011-02-28
    • 2018-02-25
    • 2013-09-21
    • 1970-01-01
    相关资源
    最近更新 更多