Исключение нулевой ссылки в операторе выбора linq - PullRequest
0 голосов
/ 07 мая 2020

Я получаю исключение с нулевой ссылкой из нижеследующего запроса linq. У меня есть таблица с entityID (ссылка на другую таблицу для получения переведенного текста), но в некоторых случаях у меня нет надлежащего переведенного текста в моей дочерней таблице. В этом случае мне нужно взять текст поля lookupName и назначить его полю lookupName.

 await _context.FormLookup.Where(x=>!(x.isDeleted))
                .Select(x => new LookupList() { 
                    lookupID = x.lookupID, 
                    TransilatedName = _context.TranslatedText.FirstOrDefault(z => z.entityID == x.entityID && z.languageId == language && !(z.isDeleted)).languageText, 
                    lookupName = x.lookupName, 
                    itemCount = x.lookupDetails.Count(),
                    parent = x.parentID
                }).ToListAsync();

Мне нужно добавить условие, например

TransilatedName = _context.TranslatedText.FirstOrDefault(z => z.entityID == x.entityID && z.languageId == language && !(z.isDeleted)) != null ? TransilatedName = _context.TranslatedText.FirstOrDefault(z => z.entityID == x.entityID && z.languageId == language && !(z.isDeleted)).languageText : x.lookupName,

Есть предложения?

1 Ответ

0 голосов
/ 07 мая 2020

Выберите свойство LanguateText перед использованием FirstOrDefault:

var query = dbContext.FormLookup
    .Where(x=>!(x.isDeleted))
    .Select(x => new LookupList()
    { 
        lookupID = x.lookupID, 
        TransilatedName = dbContext.TranslatedText
            .Where(translatedText => translatedText.entityID == x.entityID
                                  && translatedText.languageId == language 
                                  && !translatedText.isDeleted)
            .Select(translatedText => translatedText.languageText)
            .FirstOrDefault(), 
        ...
    });
...