Как обработать запрос linq, который возвращает ноль строк и возвращает десятичное значение? - PullRequest
0 голосов
/ 02 июня 2011

Когда этой функции присваивается идентификатор, который в SQL возвращает 0 строк, я получаю ошибку ниже:

Нулевое значение не может быть присвоено элементу с типом System.Decimal, который является типом значения, не допускающим значения NULL.

Каков наилучший способ изменить запрос, чтобы предотвратить это. Я извлекаю значение из таблицы, отличной от запрашиваемой здесь, поэтому я бы хотел иметь возможность присвоить ему «плохой» идентификатор.

    public decimal GetSumOfValuesForAccount(Guid companyId)
    {
        return (from o in _context.Details
                where o.CustomerID == companyId
                select o).Sum(p => p.SomeValue.GetValueOrDefault());
    }

Возвращает ошибку:

1 Ответ

4 голосов
/ 02 июня 2011

вы можете вернуть:

return (from o in _context.Details
                where o.CustomerID == companyId
                select o).Sum(p => p.SomeValue) ?? -1.0;

или

decimal? temp = (from o in _context.Details
                where o.CustomerID == companyId
                select o).Sum(p => p.SomeValue);
return temp ?? -1.0;

Оператор ?? проверит наличие нуля, а если пусто, вернет следующее значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...