piattaforma C #, Rete dei puntini 4.0
var city0 = DataCache.GetAllCities().Where(c => c.GeoName.Contains("Dubai")).FirstOrDefault();
la Variable Duabi esiste nei dati e questo restituisce oggetto città
var city1 = DataCache.GetAllCities().Where(c => c.CityID== 23804982) .FirstOrDefault();
l'id 23804982 non esiste nei dati e questo restituisce l'oggetto nullo
var city2 = DataCache.GetAllCities().Where(c => c.GeoName.Contains("WrongCityName")).FirstOrDefault();
la variabile WrongCityName non esiste nei dati e questo restituisce il seguente errore.
il riferimento oggetto non è impostato su un'istanza di un oggetto.
[Edit] Ho ricevuto l'errore quando l'ultima query eseguita. non quando valuti City2
En title : When Lambda query Use ‘Contains’ and it does not match the condition “Object reference not set to an instance of an object” error returns
beh,
city2
sarà nullo, perché hai usatoFirstOrDefault
- e il valore predefinito per le classi è nullo.si dovrebbe controllare per nullità prima di utilizzarlo:
ora che sta assumendo il codice che hai effettivamente dato è in esecuzione senza problemi. non sarebbe se
c.GeoName
fosse nulla per qualche città... perché si sarebbe chiamataContains
su un riferimento nullo. è possibile risolvere questo problema con:forse
c
oc.GeoName
è nullo -- hai controllato quelle?city2
o è quando la query viene eseguita?