我无法弄清楚为什么我的代码无效。当该字段为空时,它只是连续加载。此外,当字段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;
}
答案 0 :(得分:3)
正如Maciej所提到的,你很可能会看到连续加载的影响,因为抛出的异常没有被正确捕获并导致UI留在装载 -state。
可能会发生错误,因为您的查询返回一个空列表。稍后您调用First()
,如果cities
列表为空,则会引发该错误。
您可以像这样简化您的方法:
private async Task<City> RetrieveCity(string name)
{
return await db.Cities.FirstOrDefaultAsync(c => c.CityName.Equals(name));
}
答案 1 :(得分:2)
确保cities.Count()&gt;在尝试从列表中获取第一个元素之前为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;
}
答案 2 :(得分:1)
使用
.setDrawCircles = NO;
如果序列为空,它将返回null
更多信息:
https://msdn.microsoft.com/en-us/library/bb340482(v=vs.100).aspx
When to use .First and when to use .FirstOrDefault with LINQ?