|
Поиск ключа по "части" ключа Dictionary<string,string>
|
|||
---|---|---|---|
#18+
Приветствую всех! Есть ли вариант найти все ключи удолитворяющие определенной маске? к примеру: Код: c# 1. 2. 3. 4. 5.
найти все ключи "1%", кроме как перебором? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2017, 09:36 |
|
Поиск ключа по "части" ключа Dictionary<string,string>
|
|||
---|---|---|---|
#18+
.Where(kvp => kvp.Key.Substring(0, 1) == "1") ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2017, 09:44 |
|
Поиск ключа по "части" ключа Dictionary<string,string>
|
|||
---|---|---|---|
#18+
LR, Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2017, 09:47 |
|
Поиск ключа по "части" ключа Dictionary<string,string>
|
|||
---|---|---|---|
#18+
нафига тогда dictionary? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2017, 09:59 |
|
Поиск ключа по "части" ключа Dictionary<string,string>
|
|||
---|---|---|---|
#18+
Dictionary<int, string> z = new Dictionary<int, string>(); z.Add(0, "ноль"); z.Add(1, "один"); z.Add(2, "два"); z.Add(10, "десять"); z.Add(11, "одиннадцать"); foreach (var i in z.Where(i => i.Key / (int)Math.Pow(10, ((i.Key == 0) ? 1 : (int)Math.Ceiling(Math.Log10(Math.Abs(i.Key) + 0.5))) - 1) == 1)) { Console.WriteLine(i.Value); } =) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2017, 10:10 |
|
Поиск ключа по "части" ключа Dictionary<string,string>
|
|||
---|---|---|---|
#18+
Roman Mejtesнафига тогда dictionary? Ключ словаря, уникален, но собирается из строк, необходимо отобрать значения по группе закодированной в ключ. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2017, 10:33 |
|
Поиск ключа по "части" ключа Dictionary<string,string>
|
|||
---|---|---|---|
#18+
LR.Where(kvp => kvp.Key.Substring(0, 1) == "1") это ж тоже перебор, только коротко записанный ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2017, 10:38 |
|
Поиск ключа по "части" ключа Dictionary<string,string>
|
|||
---|---|---|---|
#18+
Mixonнайти все ключи "1%", кроме как перебором?Никак. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2017, 10:43 |
|
Поиск ключа по "части" ключа Dictionary<string,string>
|
|||
---|---|---|---|
#18+
Алексей КMixonнайти все ключи "1%", кроме как перебором?Никак. можно написать свою реализацию IDictionary ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2017, 10:45 |
|
Поиск ключа по "части" ключа Dictionary<string,string>
|
|||
---|---|---|---|
#18+
ИзопропилLR.Where(kvp => kvp.Key.Substring(0, 1) == "1") это ж тоже перебор, только коротко записанный Не уверен, https://msdn.microsoft.com/en-us/library/xfhwa508.aspx The Dictionary<TKey, TValue> generic class provides a mapping from a set of keys to a set of values. Each addition to the dictionary consists of a value and its associated key. Retrieving a value by using its key is very fast, close to O(1), because the Dictionary<TKey, TValue> class is implemented as a hash table. вполне можно предположить что оптимизатор запросов linq использует это... ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2017, 11:11 |
|
Поиск ключа по "части" ключа Dictionary<string,string>
|
|||
---|---|---|---|
#18+
LRвполне можно предположить что оптимизатор запросов linq использует это... Другое дело, что такое выражение (kvp.Key.Substring(0, 1)) будет не по зубам оптимизатору... ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2017, 11:14 |
|
Поиск ключа по "части" ключа Dictionary<string,string>
|
|||
---|---|---|---|
#18+
LRвполне можно предположить что оптимизатор запросов linq использует это... каким боком??? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2017, 11:14 |
|
Поиск ключа по "части" ключа Dictionary<string,string>
|
|||
---|---|---|---|
#18+
ИзопропилАлексей Кпропущено... Никак. можно написать свою реализацию IDictionaryНу можно ещё описать Dictionary<string, Dictionary<string, string>> , можно для групп завести второй Dictionary<string, string> , только ТС в вопросе явно указал имеющуюся структуру данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2017, 11:22 |
|
Поиск ключа по "части" ключа Dictionary<string,string>
|
|||
---|---|---|---|
#18+
LRИзопропилпропущено... это ж тоже перебор, только коротко записанный Не уверен, https://msdn.microsoft.com/en-us/library/xfhwa508.aspx The Dictionary<TKey, TValue> generic class provides a mapping from a set of keys to a set of values. Each addition to the dictionary consists of a value and its associated key. Retrieving a value by using its key is very fast, close to O(1), because the Dictionary<TKey, TValue> class is implemented as a hash table. вполне можно предположить что оптимизатор запросов linq использует это...Исходники .Net открыты, можно легко убедиться в обратном. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2017, 11:24 |
|
Поиск ключа по "части" ключа Dictionary<string,string>
|
|||
---|---|---|---|
#18+
Алексей КИсходники .Net открыты, можно легко убедиться в обратном. Да, linq2obj where - простой перебор... Хотя, при желании, hash Dictionary<TKey,TValue> в некоторых запросах linq-where пожалуй можна было бы использовать... Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2017, 11:50 |
|
Поиск ключа по "части" ключа Dictionary<string,string>
|
|||
---|---|---|---|
#18+
можно еще вот так из пушки по воробушку стрельнуть :) Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2017, 12:00 |
|
Поиск ключа по "части" ключа Dictionary<string,string>
|
|||
---|---|---|---|
#18+
ИзопропилLRвполне можно предположить что оптимизатор запросов linq использует это... каким боком??? В данном случае никаким... но, вполне можно было бы использовать для простых запросов типа .Where(kvp => kvp.Key > 1) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2017, 12:01 |
|
Поиск ключа по "части" ключа Dictionary<string,string>
|
|||
---|---|---|---|
#18+
LRВ данном случае никаким... но, вполне можно было бы использовать для простых запросов типа .Where(kvp => kvp.Key > 1) но тогда не хэш-таблица должна быть хранилищем, а какая-то разновидность дерева. оптимизаторы до такого(выбора или генерации подходящей структуры хранения) ещё не дошли. хотя задача интересная. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2017, 13:12 |
|
Поиск ключа по "части" ключа Dictionary<string,string>
|
|||
---|---|---|---|
#18+
ИзопропилLRВ данном случае никаким... но, вполне можно было бы использовать для простых запросов типа .Where(kvp => kvp.Key > 1) но тогда не хэш-таблица должна быть хранилищем, а какая-то разновидность дерева. оптимизаторы до такого(выбора или генерации подходящей структуры хранения) ещё не дошли. хотя задача интересная.Ну Count() оптимизировали, начало положено. :-) Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2017, 13:53 |
|
Поиск ключа по "части" ключа Dictionary<string,string>
|
|||
---|---|---|---|
#18+
Изопропилно тогда не хэш-таблица должна быть хранилищем, а какая-то разновидность дерева. ну х.з., вполне себе "одноуровневое однонаправленное дерево" ))) Код: c# 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2017, 14:19 |
|
Поиск ключа по "части" ключа Dictionary<string,string>
|
|||
---|---|---|---|
#18+
Какие-то оптимизации возможны если данные упорядочены по ключу, тогда можно применить тот же бинарный поиск и т.п. Dictionary это хэш-таблица, данные там хранятся упорядоченные по хэшу ключа, поэтому кроме как перебором оттуда никак не выберешь. Можно взять OrderedDictionary , тогда в нем выполнить бинарный поиск первого попавшегося ключа подходящего под условие, а затем выбрать все подходящие рядом с ним. Но это сработает если условие поиска типа "1%", если же "%1" то только перебор. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2017, 14:33 |
|
Поиск ключа по "части" ключа Dictionary<string,string>
|
|||
---|---|---|---|
#18+
Mixonнайти все ключи "1%", Это не ключ, а пол ключа. Если надо быстро, то переливай в другую коллекцию м разбивкой на буквы или СВОЙ КЛЮЧ. Или в базу с полнотекстовым поиском like ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2017, 16:27 |
|
|
start [/forum/topic.php?fid=20&fpage=41&tid=1399771]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
40ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 145ms |
0 / 0 |