0

在我的应用程序中,我有一个包含这些项目列表的类:

public class Order
{
    (...)
    public List<OrderDetailInfo> mListOrderDetail { get; set; } 
}

如果形状像这样,还有一个 orderDetail:

public class OrderDetailInfo
{
    public int mOrderDetailID { get; set; }
    public int mOrderDetailName { get; set; }
    (...)
}

在我的应用程序的一个地方,我必须用空的东西填充这个列表。所以我创建了一堆“假”的 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。我怎么能那样做?

4

2 回答 2

5

调用FirstOrDefaultinsted 的SingleOrDefault

FirstOrDefault()用于预期集合中存在零个或多个结果的情况。如果有多个结果,则调用此方法返回第一项,如果没有则返回默认值。

SingleOrDefault()用于在输入集合中预期零个或一个结果时。如果恰好存在一个结果,则调用此方法返回一个结果,如果没有结果,则返回默认值,如果有多个结果,则返回异常。

于 2013-06-19T13:52:41.857 回答
1

尝试使用“FirstOrDefault”而不是“SingleOrDefault”。

于 2013-06-19T13:53:33.283 回答