测试ConcurrentQueue中是否已存在具有ID的元素

时间:2015-10-26 19:12:03

标签: c#

我想测试是否已经使用ID属性添加了ConcurrentQueue中的对象。我没有太多运气试过以下内容:

ConcurrentQueue<StrippedResponse> responses = new ConcurrentQueue<StrippedResponse>();
// Add elements to the responses object.
if (responses.Contains(e => e.ID == request.ID))
{
  // Do something special
}

我可以使用ConcurrentQueue查找/定位/测试元素是否存在吗?如果是这样,我该怎么做?如果ConcurrentQueue无法使用该功能,那么在添加/排队对象时我应该使用哪种集合是线程安全的?

2 个答案:

答案 0 :(得分:2)

如果您关心的只是存在,请尝试

string

答案 1 :(得分:0)

我会覆盖Equals方法并使用Any扩展来获得更清晰的外观。

public class StrippedResponse
{
    public int ID { get; set; }

    ...

    public override bool Equals(object obj)
    {
        return ID == ((StrippedResponse)obj).ID;
    }
}


ConcurrentQueue<StrippedResponse> responses = new  ConcurrentQueue<StrippedResponse>();

public void YourMethod()
{
    // Add elements to the responses object.
    if (responses.Any(e => e.Equals(request)))
    {
      // Do something special
    }
}