我使用阻止集合,因为我需要此列表是线程安全的:
Orders = new BlockingCollection<Order>();
我试图删除特定订单,假设我要删除order.ID 1
如果它是正常的集合将类似
orders.Remove(orders.Where(o => o.ID == 1).First());
我已经阅读了Take()
和TryTake()
这些集合,但没有一个允许我指定要删除的集合。
答案 0 :(得分:4)
您可以使用ConcurrentDictionary<int, Order>
。特别是其TryRemove
方法获取ID,删除条目,并返回Order
。
此集合是线程安全的,但不阻塞。与Dictionary<TKey, TValue>
一样,密钥必须是唯一的(使用First
代替Single
表示在您的情况下可能会违反约束条款。)