Jom*_*ohn 0 .net c# asp.net lambda .net-4.0
平台C#,Dot net 4.0
var city0 = DataCache.GetAllCities().Where(c => c.GeoName.Contains("Dubai")).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
变量Duabi存在于数据中,它返回城市对象
var city1 = DataCache.GetAllCities().Where(c => c.CityID== 23804982) .FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
数据中不存在id 23804982,这将返回null对象
var city2 = DataCache.GetAllCities().Where(c => c.GeoName.Contains("WrongCityName")).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
变量WrongCityName 在数据中不存在,这将返回以下错误.
你调用的对象是空的.
[编辑]我在上次执行查询时收到错误.不是在我评估city2时
好吧,city2将为null,因为您已经使用过FirstOrDefault- 而且类的默认值为null.
在使用之前,您应该检查它是否为null:
if (city2 != null)
{
// Okay, I found a matching city. Now I can use it
}
Run Code Online (Sandbox Code Playgroud)
现在假设您实际给出的代码正在执行而没有任何问题.如果c.GeoName某个城市是空的,那就不会...因为你要调用Contains一个空引用.你可以解决这个问题:
var city2 = DataCache.GetAllCities()
.Where(c => c.GeoName != null &&
c.GeoName.Contains("WrongCityName"))
.FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)