我需要检查FirstOrDefault()是否为null,如果不是,则取一些属性。我最好的选择是:
var results = Database.Set<Pizzas>().Select(x => new PizzaViewModel
{
Base = Database.Set<Bases>().FirstOrDefault(y => y.Id == x.Base.Id) != null ? Database.Set<Bases>().FirstOrDefault(y => y.Id == x.Base.Id).Name : null
}).ToList();
有更好的方法吗?
答案 0 :(得分:4)
您可以在FirstOrDefault()
上使用空传播运算符:
Base = Database.Set<Bases>().FirstOrDefault(y => y.Id == x.Base.Id)?.Name
答案 1 :(得分:3)
由于有人提到了多个属性我会添加它,let允许我们保留基数以便我们可以查询多个事物,而null传播运算符允许我们确保我们如果找不到基地,就不要破坏。
var bases = Database.Set<Bases>();
var results =
(from pizza in Database.Set<Pizzas>()
let pizzaBase = bases.FirstOrDefault(pizzaBase => pizzaBase.Id == pizza.Base.Id)
select new PizzaViewModel {
Base = pizzaBase?.Name,
BaseIngredients = pizzaBase?.Ingredients
}).ToList();
答案 2 :(得分:0)
你可以这样做C#&lt; 6.0:
Base = Database.Set<Bases>().Where(y => y.Id == x.Base.Id)
.Select(y=> y.Name).FirstOrDefault();
否则,您可以在?
之前使用Null-Conditional Operator(.Name
)运算符