Как найти 'первое' значение в Словаре?

Вместо того, чтобы делать индекс на основе функции (если это даже возможно в mysql) делают Ваш, где пункт делает сравнение диапазона. Что-то как:

, Где TranDateTime> '17.08.2008 0:00:00' и TranDateTime < '17.08.2008 11:59:59')

Это позволяет DB использовать индекс на TranDateTime (существует один, правильно?), чтобы сделать выбор.

5
задан IAbstract 28 September 2012 в 14:21
поделиться

4 ответа

Независимо от того, как вы это одеваете, вам, по сути, придется выполнить foreach над значениями в Словаре . Dictionary обеспечивает доступ, близкий к O (1), для полного ключа данного значения. Он не предназначен для обеспечения эффективного доступа к частичному ключу. Для этого вам нужно будет сохранить второй экземпляр Dictionary , выполняющий соответствующее отображение.

6
ответ дан 18 December 2019 в 07:55
поделиться

Кратчайший способ найти значение, соответствующее некоторым критериям (я не совсем понял, что конкретно вам нужно - сначала F1 - параметр общего типа, а затем вы используете == , чтобы сравнить его, как если бы это было значение ...):

dictionary.Values.First(x => ...);

где ... будет логическим выражением на x . Однако это не будет быстрее, чем foreach ... потому что вы не выполняете поиск по ключу словаря. Быстрый только поиск ключа; для чего-то еще вы должны выполнить линейное сканирование (или поддерживать второй словарь для другого ключа, который будет соответствовать тому, что вы ищите). [скопировано из комментария]

7
ответ дан 18 December 2019 в 07:55
поделиться

Словарь не поддерживает какой-либо конкретный порядок между элементами, поэтому на самом деле нет никакого элемента, который мог бы быть первым, если вы не укажете какой-либо порядок.

Вы можете получить первый элемент, который словарь находит следующим образом:

MyTableClass one = dict.Where(pair => pair.Value.F1 == MyEnum.value).First();

Он будет просто перебирать элементы, пока не найдет совпадение, поэтому вы просто используете словарь как список. Если вам нужна производительность, у вас должен быть словарь, в котором значение из F1 является ключевым.

5
ответ дан 18 December 2019 в 07:55
поделиться

Вы можете использовать метод расширения .First ().

2
ответ дан 18 December 2019 в 07:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: