【发布时间】:2019-07-10 01:34:04
【问题描述】:
我在 EntityFrameworkCore 中有以下 Linq 表达式:
var models = await products.Select(product => new ProductModel {
Id = product.Id,
ProductType = new ProductTypeModel {
Id = product.ProductType.Id,
Name = product.ProductType
.ProductTypesI18N
.FirstOrDefault(y => y.LanguageCode == languageCode)?.Name
}
}.ToListAsync()
我收到以下错误:
An expression tree lambda may not contain a null propagating operator.
如果 FirstOrDefault 返回 null,是否有不触发错误的捷径?
注意:
我认为这可能是比使用 FirstOrDefault 更好的方法。
例如,在以下代码行中:new ProductTypeModel {
【问题讨论】:
-
尝试将整个表达式封装在括号中或封装到它自己的“var”变量中,然后添加 ?.Name。或者你可以使用 null colacing docs.microsoft.com/en-us/dotnet/csharp/language-reference/…
-
@ZakkDiaz null cloaking 不起作用,我认为,因为我需要返回名称 ...
-
这很奇怪,因为据我所知,您的空传播运算符不是表达式树 lambda 的一部分。该查询究竟是如何使用的?它是否在更大的查询中?
-
如果
products是来自 DbSet 的IQueryable,则无需检查null,因为查询是作为没有空引用概念的 SQL 执行的。跨度>
标签: c# linq entity-framework-core