linq 表达式内部的深度空检查,有没有更好的方法?

Deep null check inside linq expression, is there a better way?

除非它在 ​​Linq 表达式中,否则我可以使用运算符“?.”。但是因为我不能在 Linq 中使用它,所以它是糟糕的代码编写。如何进行深度空值检查?

_collection.Select(x=> new CollectionModel
{
Title = x.CollectionValues != null &&
        x.CollectionValues.Any(x => x.Amount == amount) &&
        x.CollectionValues.First(x => x.Amount == amount).TranslationTitle != null && 
        x.CollectionValues.First(x => x.Amount == amount).TranslationTitle.TranslationValues != null &&
        x.CollectionValues.First(x => x.Amount == amount).TranslationTitle.TranslationValues.Any(x => x.LanguageId == languageId) ?
        x.CollectionValues.First(x => x.Amount == amount).TranslationTitle.TranslationValues.FirstOrDefault(x => x.LanguageId == languageId).Value 
        : ""
}
)

尽量不要在 LINQ to Entities 查询中进行任何空值检查。 EF 应该自动处理空值:

_collection.Select(x=> new CollectionModel
    {
        Title = x.CollectionValues!.FirstOrDefault(x => x.Amount == amount)!
            .TranslationTitle.TranslationValues!
            .FirstOrDefault(x => x.LanguageId == languageId)!
            .Value ?? ""
    }
);