Find() и First () бросает исключения, как вернуть null вместо этого?
есть ли метод поиска linq lambda, который возвращает null, вместо того, чтобы выдавать исключение при поиске списка?
мое текущее решение-это что-то вроде: (чтобы избежать исключения из перебрасываясь)
if (list.Exists(x => x.Foo == Foo))
{
var listItem = list.Find(x => x.Foo == Foo);
}
Он просто чувствует себя неправильно, чтобы повторить выражение.
что-то вроде ...
var listItem = list.Find(x => x.Foo == Foo);
if (listItem != null)
{
//Do stuff
}
... мне уже лучше. Или это только я?
у тебя есть лучший подход? (Решение не должно возвращаться null, просто лучшее решение хорошо)
2 ответа:
ответ Bala R правильный, я просто хотел добавить часть информации:
обратите внимание, что если
List<T>
содержит объекты, которые по дизайну не могут быть null,FirstOrDefault
вернет что-то другое, чемnull
. Компилятор, вероятно, даст предупреждение/ошибку об этом в операторе if. В этом случае вы должны подойти к своей ситуации следующим образом:List<MyObjectThatCannotBeNull> list; var listItem = list.FirstOrDefault(x => x.Foo == Foo); if (!listItem.Equals(default(MyObjectThatCannotBeNull))) { //Do stuff }