Нулевое значение SQLite - обрабатывается как ноль в вычислениях .NET

Каков наиболее эффективный способ использования нулевого значения в базе данных SQLite, рассматриваемого как нулевое значение в расчетах .NET? Я использую Entity Framework.

Допустим, у меня есть:

Dim result as Double
result = e_employee_salary * e_index

где e_employee_salary и e_index и поля в базе данных SQLite, но одно или оба из них могут иметь значение NULL, и в этом случае я хочу рассматривать их как нулевое значение в приведенном выше расчете.

Я ищу наиболее эффективный способ сделать это, поскольку эти вычисления появляются во многих средствах получения свойств повсюду и вызываются с высокой частотой.


person Nuts    schedule 29.08.2013    source источник
comment
Любая причина, по которой нулевое значение не может быть захвачено с точки зрения запроса / sql? Предполагая, что isnull является функцией SQLite: isnull (column_name, 0) всегда будет возвращать 0 (целое число), если оно равно null. isnull (имя_столбца, '0') всегда будет возвращать '0' (строка), если значение столбца равно нулю. Просто предложение.   -  person Tiny Haitian    schedule 30.08.2013
comment
stackoverflow.com/ questions / 799375 /   -  person Tiny Haitian    schedule 30.08.2013
comment
Я использую Entity Framework и не определяю запросы sql напрямую. Вместо этого я использую LINQ to Entities для чтения данных.   -  person Nuts    schedule 31.08.2013


Ответы (2)


У вас может быть два подхода: использование языка программирования, например @Claudio, или использование запроса SQLite:

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

Таким образом, вы всегда будете получать из базы данных ненулевые значения.

person LS_ᴅᴇᴠ    schedule 30.08.2013

Я могу что-то упустить по вашему вопросу, но я бы сказал, что вы могли бы использовать

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

(e_employee_salary ?? 0) * (e_index ?? 0) // C#
person Claudio Redi    schedule 29.08.2013
comment
Я получаю сообщение об ошибке времени разработки: "?" здесь нельзя использовать символ. Это C # (я использую VB.NET). Можете ли вы обратиться к какой-нибудь документации MSDN? - person Nuts; 29.08.2013
comment
@ user2143213: извини. Добавлена ​​версия VB - person Claudio Redi; 29.08.2013