2015-10-26 4 views
0

Я бы хотел проверить, добавлен ли объект в моем ConcurrentQueue с использованием свойства 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, какую коллекцию я должен использовать, это потокобезопасность при добавлении/вставка объектов?

+1

Я думаю, что вам нужны ответы. Где (e => e.ID == request.ID) ' – sab669

ответ

2

Если все, что вы заботитесь о существовании попробовать

if(responses.Any(e => e.ID == request.ID)) 
0

Я бы переопределить метод Equals и использовать любое расширение для более чистого взгляда.

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 
    } 
} 
Смежные вопросы