LINQ NullReferenceException для DefaultIfEmpty

Я ищу решение проблемы наличия DefaultIfEmpty() метод extension не принимает нулевые значения при использовании во внешнем соединении LINQ.

Код следующим образом:

            var SummaryLossesWithNets = (from g in SummaryLosses
                                     join n in nets
                                     on g.Year equals n.Year into grouping
                                     from x in grouping.DefaultIfEmpty()
                                     select new
                                         {
                                             Year = g.Year,
                                             OEPGR = g.OccuranceLoss,
                                             AEPGR = g.AggregateLoss,
                                             OEPNET = ((x.OEPRecovery == null) ? 0 : x.OEPRecovery),
                                             AEPNET = ((x.AEPRecovery == null) ? 0 : x.AEPRecovery),
                                         });

В списке SummaryLosses есть данные за многие годы, которые я хотел бы присоединить к таблице 'nets', которая содержит часть лет. Исключение выдается для x, являющегося нулевым значением, я предполагаю, потому что годы в SummaryLosses, не совпадающие с годами в сетях, создают нулевые значения в списке группировки.

Как можно проверить здесь нулевое значение? Как вы можете видеть, я пытался проверить наличие нулевых значений в свойствах x, но, поскольку x равен null, это не работает.

С наилучшими пожеланиями Ричард

2 ответа

Решение

Просто проверьте, x вместо этого имеет значение null:

OEPNET = x == null ? 0 : x.OEPRecovery,
AEPNET = x == null ? 0 : x.AEPRecovery

Или если x.OEPRecovery а также x.AEPRecovery Обнуляемые свойства тоже используйте:

OEPNET = x == null ? 0 : (x.OEPRecovery ?? 0),
AEPNET = x == null ? 0 : (x.AEPRecovery ?? 0)

Если у вас есть много заявлений присоединения

проверить проверить all joined tables и убедитесь, что foreign key you are using (в сравнении или, скажем, заинтересованы) is not null

Другие вопросы по тегам