Utilizzando la parola chiave uguali in LINQ [duplicato
-
27-10-2019 - |
Domanda
Possibile duplicato:
Espressione di lambda: == vs. .equals ()
Ciao,
Uso molto, la parola chiave è uguale per confrontare le variabili e altre cose.
ma
wines = wines.Where(d => d.Region.Equals(paramRegion)).ToList();
restituire un errore in fase di esecuzione quando nella regione dei dati è nullo
Ho dovuto usare il codice
wines = wines.Where(d => d.Region == paramRegion).ToList();
Per sbarazzarsi dell'errore.
Qualche idea per cui questo solleva un errore?
Grazie.
Soluzione
Non è possibile chiamare metodi di istanza con riferimento a oggetti null. Dovresti verificare che la regione non sia nulla prima di chiamare i suoi metodi di istanza.
wines = wines.Where(d => d.Region != null && d.Region.Equals(paramRegion)).ToList();
Il d.Region == paramRegion
è (molto probabilmente) ampliato a object.Equals(d.Region, paramRegion)
e quel metodo statico verifica se i parametri sono nulli o meno prima di chiamare il metodo equals ().
Puoi anche scrivere la condizione in ordine diverso se sai che il paramRegion
non può essere nullo.
Debug.Assert(paramRegion != null);
wines = wines.Where(d => paramRegion.Equals(d.Region)).ToList();
Altri suggerimenti
Fondamentalmente se
d.Region == null
Quindi qualsiasi metodo chiamata, eccolo qui È uguale a(...) Su questo aumenterà un'eccezione poiché non è inizializzato.
L'uso può usare:
paramRegion.Equals(d.Region)