如果“Orders”集合为null,我想知道以下表达式返回null的最佳方法。目前“First”引发了一个例外。我试过“FirstOrDefault”没有成功。
表达式:
var myOrderItems = Model.Orders.First(o => o.Id == 1).OrderItems.ToList();
如果没有订单,那么我希望“myOrderItems”只是为空。
这是一个示例查询,因为我想将推荐的答案应用于其他查询。
编辑:我目前在ViewModel中将“订单”定义为:
List<Orders> _myOrders;
可能应将其定义为:
List<Orders> _myOrders = new List<Orders> or something else to make it empty???????
答案 0 :(得分:2)
var myOrderItems = Model.Orders == null ? null : Model.Orders.First(o => o.Id == 1).OrderItems.ToList();
答案 1 :(得分:2)
试试这个:
var myOrderItems = ((Model.Orders ?? Enumerable.Empty<YourType>())
.FirstOrDefault(o => o.Id == 1) ?? SomeNonNullDefault).OrderItems.ToList();
如果您使用AsQueryable
而不是Enumerable.Empty
,请在IQueryable
之后添加IEnumerable
。
答案 2 :(得分:0)
List<OrderItems> myOrderItems = null;
if (Model.Orders != null)
{
var order = Model.Orders.FirstOrDefault(o => o.Id == 1);
if (order != null)
{
myOrderItems = order.OrderItems.ToList();
}
}
答案 3 :(得分:0)
如果没有
Order
,那么我希望myOrderItems
成为null
。
这是解决这个问题的错误方法。如果没有Order
,那么Order
应返回空集合,但不是null
。如果可能,解决这个问题。在任何情况下,请勿使用myOrderItems
重复相同的错误。