阻止收集 - 删除特定元素

时间:2014-03-11 17:20:12

标签: c# blockingcollection

我使用阻止集合,因为我需要此列表是线程安全的:

Orders = new BlockingCollection<Order>();

我试图删除特定订单,假设我要删除order.ID 1

如果它是正常的集合将类似

orders.Remove(orders.Where(o => o.ID == 1).First());   

我已经阅读了Take()TryTake()这些集合,但没有一个允许我指定要删除的集合。

1 个答案:

答案 0 :(得分:4)

您可以使用ConcurrentDictionary<int, Order>。特别是其TryRemove方法获取ID,删除条目,并返回Order

此集合是线程安全的,但不阻塞。与Dictionary<TKey, TValue>一样,密钥必须是唯一的(使用First代替Single表示在您的情况下可能会违反约束条款。)