Existe-t-il une méthode de recherche linq lambda qui renvoie null, au lieu de lever une exception, lors de la recherche dans une liste?
Ma solution actuelle est quelque chose comme: (pour éviter que l'exception ne soit levée)
if (list.Exists(x => x.Foo == Foo))
{
var listItem = list.Find(x => x.Foo == Foo);
}
C'est juste mal de répéter l'expression.
Quelque chose comme ...
var listItem = list.Find(x => x.Foo == Foo);
if (listItem != null)
{
//Do stuff
}
... me fait du bien. Ou est-ce juste moi?
Avez-vous une meilleure approche sur celui-ci? (La solution n'a pas besoin de renvoyer null, juste une meilleure solution est bonne)
var listItem = list.FirstOrDefault(x => x.Foo == Foo);
if (listItem != null)
{
//Do stuff
}
La réponse de Bala R est correcte, je voulais juste ajouter une information:
Notez que si List<T>
contient des objets dont la conception ne peut pas être nulle, FirstOrDefault
renverra autre chose que null
. Le compilateur est susceptible de donner un avertissement/erreur à ce sujet à l'instruction if. Dans ce cas, vous devez aborder votre situation comme ceci:
List<MyObjectThatCannotBeNull> list;
var listItem = list.FirstOrDefault(x => x.Foo == Foo);
if (!listItem.Equals(default(MyObjectThatCannotBeNull)))
{
//Do stuff
}