У меня есть подзапрос, который возвращает самое последнее значение из дочерней таблицы. В некоторых случаях подзапрос ничего не возвращает. Приведенный ниже запрос терпит неудачу во время выполнения, потому что предполагаемый тип MemberPrice является десятичным и не имеет значения NULL.Как обрабатывать Null в подзапросе LINQ?
Упрощенный запрос:
Dim q = From s In dc.STOCKs _
Select s.ID, MemberPrice = _
(From mp In dc.STOCKPRICEs Where mp.NUMBER = s.NUMBER _
Order By dc.date Descending _
Select mp.PRICE).FirstOrDefault
В SQL подзапрос будет содержать Top (1) и возвратит Null, когда пусто. Как я могу справиться с этим в LINQ? Есть ли способ сделать MemberPrice нулевым или по умолчанию значение равно нулю, если не найдено (или более элегантное решение)?
Большое спасибо, Стюарт
Можете ли вы определить, что вы подразумеваете под провалом? FirstOrDefault должен возвращать Nothing, если подзапрос пуст и, следовательно, MemberPrice должен быть 0 в этом случае. – JaredPar
Я получаю System.InvalidOperationException {«Нулевое значение не может быть присвоено члену с типом System.Decimal, который является типом значения, не имеющим значения NULL."}. Я также ожидал, что он вернет 0, если null, поэтому я должен что-то упустить. – Stuart
Каков тип mp.PRICE? – JaredPar