Find() и First() выдает исключения, как вернуть null вместо этого? - программирование
Подтвердить что ты не робот

Find() и First() выдает исключения, как вернуть null вместо этого?

Существует ли метод поиска l лямбда linq, который возвращает 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
}

... мне лучше. Или это только я?

У вас есть лучший подход к этому? (Решение не обязательно должно возвращать нуль, просто лучшее решение хорошо)

4b9b3361

Ответ 1

var listItem = list.FirstOrDefault(x => x.Foo == Foo);
if (listItem != null)
{
    //Do stuff
}

Ответ 2

Ответ Bala R верен, я просто хотел добавить часть информации:

Обратите внимание, что если List<T> содержит объекты, которые по умолчанию не могут быть пустыми, FirstOrDefault вернет что-то еще, чем null. Компилятор, скорее всего, даст предупреждение/ошибку в инструкции if. В этом случае вы должны подойти к вашей ситуации следующим образом:

List<MyObjectThatCannotBeNull> list;
var listItem = list.FirstOrDefault(x => x.Foo == Foo);
if (!listItem.Equals(default(MyObjectThatCannotBeNull)))
{
    //Do stuff
}