Пока не зарелизились) Почему ToLookupDictionary, а не просто ToDictionary? Немного сбивает с толку. Приходится смотреть в код, чтобы понять, что отличие только в DuplicateHandling.
Здравствуйте, rameel, Вы писали:
R>Пока не зарелизились) Почему ToLookupDictionary, а не просто ToDictionary? Немного сбивает с толку. Приходится смотреть в код, чтобы понять, что отличие только в DuplicateHandling.
Потому что цели разные (спасибо за фиксы, кстати ).
ToLookupDictionary покрывает очень частный сценарий: нам нужен lookup, но для каждого ключа должен быть только один элемент. Как пример — переопределяемые конфиги (last wins) или поиск элементов в нескольких коллекциях-кандидатах (first wins)
throws чисто в нагрузку добавился. То, что там на выходе именно Dictionary — просто совпадение, самый подходящий тип из штатных.
Здравствуйте, Sinix, Вы писали:
S>ToLookupDictionary покрывает очень частный сценарий: нам нужен lookup, но для каждого ключа должен быть только один элемент.
Так в ToDictionary также
S>Как пример — переопределяемые конфиги (last wins) или поиск элементов в нескольких коллекциях-кандидатах (first wins) S>throws чисто в нагрузку добавился. То, что там на выходе именно Dictionary — просто совпадение, самый подходящий тип из штатных.
Ну если смотреть, то у нас, что в стандартной, что в нашей, идет разложение коллекции на ключ/значение с одним видимым отличием: с ключиком, что делать, если встретился дубликат.
ЗЫ.
Я к чему спросил то) Я когда сам воспользовался кодом (как под заказ)) ), первым делом залез под капот, чтобы посмотреть, что там, но зацепился я именно из-за параметра duplicateHandling — и подумал, что это наверное то, что мне нужно, но название заставило лезть внутрь.
Если что, то вопрос названия не принципиальный.
ЗЫЫ. А вообще, очень уж востребованное добавление. Странно, что его нет в стандартной библиотеке.
Здравствуйте, rameel, Вы писали:
R>Так в ToDictionary также
Убедил
Если срочно — сделай свм правки плиз, я смогу только как с тулингом и netstandard 2 разберусь.
Здравствуйте, rameel, Вы писали:
R>Пока не зарелизились) Почему ToLookupDictionary, а не просто ToDictionary? Немного сбивает с толку. Приходится смотреть в код, чтобы понять, что отличие только в DuplicateHandling.
Согласен. При наличии доппараметра вполне очевидно и из него. Единственное, я бы енум переименовал в DuplicateHandlingPolicy или просто DuplicatePolicy.
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
Здравствуйте, rameel, Вы писали:
AVK>>Единственное, я бы енум переименовал в DuplicateHandlingPolicy или просто DuplicatePolicy. R>Может тогда в DictionaryDuplicatePolicy?
Потенциально, имхо, оно может не только для словарей сгодиться.
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
Здравствуйте, AndrewVK, Вы писали:
S>>>Есть имя получше — велкам! С>>ToUniqueValuesDictionary
AVK>Dictionary по определению unique keys. А уникальность values тут вообще не в тему.
Цитирую:
ToLookupDictionary покрывает очень частный сценарий: нам нужен lookup, но для каждого ключа должен быть только один элемент.
С>ToLookupDictionary покрывает очень частный сценарий: нам нужен lookup, но для каждого ключа должен быть только один элемент.
С>Именно что уникальность values.
Нет. Ты неверно понял. Суть в том что у нас есть некая коллекция ключ-значение, но ключи в ней не уникальны. Можно сделать group by, но тогда вместо значений будет коллекция значений. Этот метод раюотает по другому. Если в коллекции встретился дубликат ключа, то используется либо первое встреченное значение, либо последнее, либо кидается исключение (дефолтное поведение стандартного ToDictionary).
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
Я против. Policy — это ересь из явы, в дотнете стандартный суффикс — Mode.
Если серьёзно, то тут суффикс и не нужен. Штатные StringComparison, FileShare etc как-то без них обходятся