Мне нужен только самый первый соответствующий элемент, потому что я не рассчитываю получить более одного KVP.Это идет вразрез с бизнес-логикой, поэтому модульное тестирование позаботится об этом.
Если это так, я бы сказал, что вам нужно использовать более надежную гарантию кода вашего намерения, и это будетSingle
(или SingleOrDefault
) метод.First
собирается вернуть первый объект из произвольного числа , соответствующих данному предикату.Если много идет вразрез с вашими ожиданиями и бизнес-правилами, похоже, это ошибка.Относитесь к этому как таковой.
var key = MyDictionary.Single(pair => pair.Value.Prop1 == someValue).Key;
С Single
, если в последовательности более одного совпадающего элемента, это приведет к исключению.
SingleOrDefault
допускает 0 или 1, но никогда больше.Если вы используете этот подход, вам нужно захватить результат и сравнить его с нулем, прежде чем выполнять с ним дополнительные операции (методы запуска, доступ к свойствам и т. Д.).