当我使用locationService.GetLatLongFromAddress
错误是:
序列不包含任何元素
我试过这段代码
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;
有什么问题?我怎么解决这个问题?
答案 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) {...}
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包。