错误:序列不包含任何元素
本文关键字:元素 何元素 包含任 错误 | 更新日期: 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/