ConcurrentDictionary toDictionary в linq запросе
gr_vl
Дата: 04.07.2014 11:06:59
Григорий
Приветствую
есть ConcurrentDictionary словарь
необходимо по опред условиям отсортировать словарь, те оставить в нем записи удовлетворяющие опред условиям
делаю чтото типа
condict=condict.Where(x=>x.Value.Name.StartWith("S")).toDictionary(x=>x.Key,x=>x.Value);
VS ругается что есть попытка присвоения типа Dictionary типу ConcurrentDictionary
те toDictionary возвращает Dictionary а как получить ConcurrentDictionary
Где-то в степи
Дата: 04.07.2014 11:11:19
Где-то в степи
Дата: 04.07.2014 11:15:20
честно сказать не понимаю, зачем такая петля нестерова, вы им чо дальше пользоваться будете?
gr_vl
Дата: 04.07.2014 11:23:49
Где-то в степи,
если честно разбираюсь.
Пишу сервис (службу windows) которая будет делать синхронизацию между 2мя системами, вернее так одна кадровая система с которой в несколько систему управления доступом поступает информация кто и куда должен иметь доступ.
Хочу использовать ConcurrentDictionary для хранения полученных с кадровой системы информации
(номер пропуска, описание куда имеет доступ и информации о том кому пропуск выдан).
gr_vl
Дата: 04.07.2014 11:25:06
Где-то в степи,
спасибо дошло а я то искал чтото типа toList(), toDictionary()
Где-то в степи
Дата: 04.07.2014 11:28:05
gr_vl,
х.з.. а база не подойдет? или у вас кадры летают как пули?
cdtyjv
Дата: 04.07.2014 16:05:11
У вас что-то принципиально неверно с дизайном. ConcurrentDictionary используется, когда надо безопасно с многих потоков делать атомарные операции - put, get, put-if-absent, и т.д.. Операция идет на один ключ! Вы же хотите осуществить операцию над всеми ключами. Разумеется, у вас это не получается.
Вместо этого вам надо использовать SortedDictionary - там уже все будет храниться в отсортированном виде. А дл обеспечения потокобезопасности оборачивать доступ к нему в критические секции.
gr_vl
Дата: 04.07.2014 18:47:53
cdtyjv,
Подразумевается что 1 поток получает данные с кадровой системы и сохраняет их в ConcurrentDictionary
а несколько потоков (сколько сконфигурированно систем управления доступом) отправляет данные каждый своей системе контроля доступом.
Как то не хотелось использовать локальную БД для временного хранения пропусков :)