Я прочитал несколько ответов по SO, но думаю, что они не решают мою проблему.Я был бы счастлив, если бы кто-то мог указать мне на тот, который имеет отношение.Рассмотрим следующие таблицы:

Существуют различные тарифы, по которым может взиматься плата за бронирование, и может быть многократных или без сборов забронирование .Каждый заряд имеет свою ставку (в $).Так, например, за забронированный автомобиль можно взимать плату за Позднее прибытие за 200 долларов, а за другой сбор Не показывать за 450 долларов.Эти тарифы могут отличаться для каждого бронирования, и не во всех бронированиях взимается плата.
Теперь я хочу показать общую сумму, взимаемую при бронировании, если таковая имеется.Для этого у меня есть следующий запрос LINQ:
Dim q = (From b In _db.Bookings
Select New With {
.Bid = b.ID,
<some other columns from booking table>
.TotalCharges = b.BookingCharges.Sum(Function(o) o.Rate)
}).ToList()
Запрос возвращает ошибку:
"Ошибка приведения к типу значения 'System.Int32', поскольку материализованное значениеnull. Либо универсальный параметр результирующего типа, либо запрос должен использовать тип, допускающий значение NULL. "
Поскольку существуют заказы, для которых нет начислений (NULL) и, следовательно, их нельзя суммировать.Я пытался использовать .TotalCharges = b.BookingCharges.DefaultIfEmpty().Sum(Function(o) o.Rate)
и .TotalCharges = b.BookingCharges.Sum(Function(o) o.Rate or 0)
, но та же ошибка.Я прочитал ответы на SO, связанные с этой ошибкой, но чувствую, что у OP другая проблема или запрос, чем у меня, а также все ответы на C #.