在我的应用程序中,我有一个包含这些项目列表的类:
public class Order
{
(...)
public List<OrderDetailInfo> mListOrderDetail { get; set; }
}
订单详情如果形状如此:
public class OrderDetailInfo
{
public int mOrderDetailID { get; set; }
public int mOrderDetailName { get; set; }
(...)
}
在我的应用程序的某个地方,我必须填写此列表中的空白内容。所以我创建了一堆“false”orderDetails对象,它们都具有相同的id:9999.我这样做是因为这个订单需要稍后确认。
确切地说,当确认此订单时,我需要根据用户的输入删除一定数量的项目,并将其替换为他创建的其他项目。所以我试着这样做:
for (int i = 0; i < _itemQuantity; i++)
{
var emptyJug = order.mListOrderDetail.SingleOrDefault(
_item => _item.mInventoryID == 9999);
order.mListOrderDetail.Remove(emptyJug);
}
但是当“var emptyJug”行被命中时,该行会崩溃,因为可能会发生很多次。我需要从列表中删除一个emptyJug单元,直到达到_itemQuantity。我怎么能这样做?
答案 0 :(得分:5)
致电FirstOrDefault
SingleOrDefault
FirstOrDefault()
SingleOrDefault()
适用于预计集合中存在零个或多个结果的情况。如果有多个结果,则调用此方法将返回第一个项目,如果没有,则返回Default。
{{1}}适用于输入集合中预期为零或一个结果的情况。如果只有一个结果,则调用此方法将返回一个结果,如果没有结果,则返回默认值;如果有多个结果,则返回异常。
答案 1 :(得分:1)
尝试使用“FirstOrDefault”而不是“SingleOrDefault”。