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

本文关键字:元素 何元素 包含任 错误 | 更新日期: 2023-09-27 17:58:32

使用locationService.GetLatLongFromAddress 获取lat和long时出错

错误为:

序列不包含任何元素

我试过这个代码

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;

问题出在哪里?我该如何解决这个问题?

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

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

编辑:我们开始了:

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) {...}

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

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

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