我想测试是否已经使用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无法使用该功能,那么在添加/排队对象时我应该使用哪种集合是线程安全的?
答案 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
}
}