none
Как удалить из BlockingCollection нужный элемент, соответствующий определённому условию? RRS feed

  • Вопрос

  • Здравствуйте.

    Есть пользовательский класс UserInfo:

    public class UserInfo { private String _userName; private Int32 _userId;

    public UserName{get{return _userName;} set{_userName = value;}}

    public UserId {get{return _userId;} set{_userId = value;}}

    }

    В каком-нибудь другом классе создаём BlockingCollection:

    private BlockingCollection<UserInfo> _informs =
                new BlockingCollection<UserInfo>();

    Создаём, там же, два экземпляра класса UserInfo и помещаем их в BlockingCollection:

    UserInfo info_1 = new UserInfo();
    info_1.UserName = "Иван";
    info_1.UserId = 11;
    _informs.Add(info_1);
    UserInfo info_2 = new UserInfo();
    info_2.UserName = "Василий";
    info_2.UserId = 102;
    _informs.Add(info_2);

    Теперь, мне нужно удалить из BlockingCollection тот её элемент, в котором, например, UserId == 102. Как это сделать? Ни метод Take(), ни метод TryTake() класса BlockingCollection не принимают входного параметра. Как удалить из BlockingCollection нужный элемент (в данном случае, соответствующий условию, что поле UserId в нём равно 102)? Подскажите, пожалуйста.



    • Изменено TownSparrow 15 августа 2013 г. 17:48 corrected
    15 августа 2013 г. 13:25

Ответы

Все ответы

  • Посмотрите на этом примере: http://stackoverflow.com/questions/17243871/consuming-blocking-collection-with-multiple-tasks-consumers

    • Помечено в качестве ответа TownSparrow 17 августа 2013 г. 10:17
    16 августа 2013 г. 12:18
  • Ладно, помечу как отвеченный, но всё равно - темна вода во облацех. Там по этой ссылке тоже не особо. Таких поисков и удалений как, например, в List<T> в ней конечно нет.


    • Изменено TownSparrow 17 августа 2013 г. 10:17
    17 августа 2013 г. 10:13