繁体   English   中英

空字段执行期间发生未处理的异常

[英]Unhandled exception occured during executing of empty field

我在弄清楚为什么我的代码无法正常工作时遇到了麻烦。 当该字段为空时,它将连续加载。 同样,当字段IS被占用时,第四次添加内容会复制该错误。 有什么帮助吗?

private async Task<City> RetrieveCity(string name)
{
     // Instantiate return variable
     City city = null;

     // Find id in ProductLines table
     var cities = await db.Cities.Where(c => c.CityName.Equals(name)).ToListAsync();
     city = cities.First();

     return city;           
}

作为马切伊提到的,它很可能,你看到因为一个异常被抛出这是不正确捕获并导致停留在装载 -状态的UI 不断加载的效果。

因为您的查询返回一个空列表,所以可能会出现错误。 稍后您调用First() ,如果cities列表为空,则会引发该错误。

您可以像这样简化您的方法:

private async Task<City> RetrieveCity(string name)
{
    return await db.Cities.FirstOrDefaultAsync(c => c.CityName.Equals(name));        
}

在尝试从列表中获取第一个元素之前,请确保citys.Count()> 0。

private async Task<City> RetrieveCity(string name)
{
 // Instantiate return variable
 City city = null;

 // Find id in ProductLines table
 var cities = await db.Cities.Where(c => c.CityName.Equals(name)).ToListAsync();
 if(cities!=null && cities.Count()>0)
 { 
    city = cities.First();
 }   
 return city;           
}

或者简单地,您只能使用FirstOrDefault来匹配您的匹配条件,例如

private async Task<City> RetrieveCity(string name)
{
     var city = await db.Cities.FirstOrDefault(c => c.CityName.Equals(name));
     return city;           
}

采用

city = cities.FirstOrDefault();

如果序列为空,它将返回null

更多信息 :

https://msdn.microsoft.com/zh-CN/library/bb340482(v=vs.100).aspx

何时使用.First以及何时将.FirstOrDefault与LINQ结合使用?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM