Ответ 1
var listItem = list.FirstOrDefault(x => x.Foo == Foo);
if (listItem != null)
{
//Do stuff
}
Существует ли метод поиска 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
}
... мне лучше. Или это только я?
У вас есть лучший подход к этому? (Решение не обязательно должно возвращать нуль, просто лучшее решение хорошо)
var listItem = list.FirstOrDefault(x => x.Foo == Foo);
if (listItem != null)
{
//Do stuff
}
Ответ 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
}