Question

Possible en double: Lambda Expression: == vs. Equals ()

Salut,

J'utilise beaucoup le mot-clé Equals pour comparer les variables et d'autres choses.

wines = wines.Where(d => d.Region.Equals(paramRegion)).ToList();

retourne une erreur lors de l'exécution lorsque les données dans la région est NULL

Je devais utiliser le code

wines = wines.Where(d => d.Region == paramRegion).ToList();

pour se débarrasser de l'erreur.

Toutes les idées pourquoi ce déclenche une erreur?

Merci.

Était-ce utile?

La solution

You cannot call instance methods with null object reference. You should check that the Region is not null before calling its instance methods.

wines = wines.Where(d => d.Region != null && d.Region.Equals(paramRegion)).ToList();

The d.Region == paramRegion is (most likely) expanded to object.Equals(d.Region, paramRegion) and that static method does check whether the parameters are null or not before calling the Equals() method.

You can also write the condition in different order if you know that the paramRegion cannot be null.

Debug.Assert(paramRegion != null);
wines = wines.Where(d => paramRegion.Equals(d.Region)).ToList();

Autres conseils

Basically if

d.Region == null

then any method call, here it's Equals(...) on that will raise an exception since it's not initialized.

Use can use:

paramRegion.Equals(d.Region)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top