错误:序列不包含任何元素

时间:2014-04-16 12:10:40

标签: c# google-maps

当我使用locationService.GetLatLongFromAddress

获得lat和长时间时出错

错误是:

  

序列不包含任何元素

我试过这段代码

var locationService = new GoogleLocationService();
var points = locationService.GetLatLongFromAddress("Ram Theatre Bus Stop, Arcot Road, Vadapalani, Chennai, Tamil Nadu");
mapDetail.Latitude = points.Latitude;
mapDetail.Longitude = points.Longitude;
mapDetail.CollegeAddressId = addressDetail[i].CollegeAddressId;

有什么问题?我怎么解决这个问题?

2 个答案:

答案 0 :(得分:4)

如果代码在序列(.First())上使用.Single()IEnumerable<T>(如消息所示),则通常会得到:没有元素。含义:空序列(不要与null序列混淆)。您没有显示执行此操作的代码,因此我只能假设这在.GetLatLongFromAddress()内发生。所以听起来有一个错误,可能与“未找到”的情况有关,但在代码中我们看不到。就个人而言,我希望“未找到”的情况下返回null,或者抛出一些明确的“未找到”异常。如果这个bug在库中:告诉库作者有关它。或者更好:修复它,并提交拉取请求(如果可以的话)。

修改:here we go

XDocument doc = XDocument.Load(string.Format(APIUrlLatLongFromAddress,
    Uri.EscapeDataString(address)));
var els = doc.Descendants("result").Descendants("geometry")
    .Descendants("location").First();
if (null != els) {...}
IMO,应该是:

XDocument doc = XDocument.Load(string.Format(APIUrlLatLongFromAddress,
    Uri.EscapeDataString(address)));
var els = doc.Descendants("result").Descendants("geometry")
    .Descendants("location").FirstOrDefault();
if (null != els) {...}

一行代码修复发送它们......

答案 1 :(得分:2)

我已经合并了Mark Gravell对GoogleLocationService的拉取请求,并推出了更新的Nuget包。

https://www.nuget.org/packages/GoogleMaps.LocationServices/