Если существует вероятность сбоя Single
из-за отсутствия элементов, используйте SingleOrDefault
.Он вернет единственный соответствующий элемент, если таковой существует, или значение по умолчанию для типа, которое будет null
для ссылочных типов (классов).Вам нужно будет проверить нулевое значение, прежде чем использовать результат.
var methodInfo = methodInfos.Where(k => predicate(k)).SingleOrDefault();
if (methodInfo != null)
{
// use result
}
Другая пара методов, которая должна быть в вашей сумке, - это First
и FirstOrDefault
.Как и Single
, они вернут соответствующий элемент.В отличие от Single
, они не будут генерировать исключение, если больше , чем существует один элемент, который соответствует.Имейте это в виду, если у вас когда-нибудь есть последовательность, из которой вам нужен соответствующий элемент, а не обязательно единственный соответствующий элемент.