2015-09-14 3 views
0

Я хочу, чтобы преобразовать следующий запрос Linq: -Linq - Сумма с ISNULL

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

Так что я сделал это: -

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

Я не в состоянии понять isnull участие в 1-й запрос. Может кто-нибудь объяснить &, как это сделать в Linq.

+2

'ISNULL()' должен проверить заданное значение столбца и заменить его на '0', если значение столбца равно« null ». – Kaf

+0

Функция ISNULL в SQL ожидает два параметра: одно - это имя поля, которое вы хотите проверить, имеет ли оно значение NULL в нем или нет, а второе - значение замены, то есть если значение равно NULL, верните этот второй параметр. поэтому оператор ISNULL (day1,0) говорит, что если day1 имеет значение null, то возвращает 0. –

ответ

1

Вы можете использовать Null Coalesce оператор при условии вашего day1 & day2 должен быть обнуляемым в стороне сервера код: -

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

ISNULL в Sql Server: -

Заменяет NULL с указанным значением замены

Мы делаем то же самое с использованием нулевого оператора угл в C#.

+0

'?? не может быть применено к операндам типа double', чтобы получить эту ошибку. – Anup

+1

@Anup - Да, очевидно, что они должны быть нулевыми в вашем коде сервера, т. Е. Тип данных должен быть «double?» –

Смежные вопросы