Есть ли альтернативы использованию List.Single для получения элемента с первичным ключом? - PullRequest
2 голосов
/ 03 марта 2010

У меня есть список объектов User из моего хранилища данных.

Теперь, когда он уже находится в памяти, единственный способ получить пользователя по его идентификатору - это использовать метод Single extension. Это действительно снижает производительность.

Я знаю, что мог бы использовать словарь вместо списка, но это было бы излишним. Я должен был бы хранить Первичный ключ 2 раза. Так есть ли другой способ сделать то, что я хочу?

Кстати, я делаю собственный класс, который может делать что-то подобное, но я надеялся на что-то из коробки.

Ответы [ 2 ]

2 голосов
/ 03 марта 2010

Предполагая, что первичный ключ является ссылочным типом, ссылку на первичный ключ можно хранить только дважды.

Вы пытались использовать Dictionary<,> и обнаружили, что он недостаточно хорошо работает? Это, безусловно, самое естественное решение. KeyedCollection<,> (предложенный Марком), конечно, тоже сработает, но требует, чтобы вы ушли из класса - и я бы не хотел гарантировать, что он действительно сэкономит память. (Вам нужно знать детали реализации - например, он может просто использовать словарь для внутреннего использования.)

1 голос
/ 03 марта 2010

Вы можете сохранить пользователей в памяти в KeyedCollection .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...