我有一个web服务,它返回某个纬度/经度附近的“诊所”列表。但是,在我的调用Web中,我无法编译,因为以下代码出现错误。
private static List<Clinic> GetClinicsNearLocation(Coordinate coordinate, int searchDistance)
{
var wsDental = new ProviderLocation_Dental();
List<Clinic> clinics = wsDental.GetSearchResults(
coordinate.Latitude, coordinate.Longitude, searchDistance);
return clinics;
}
错误是“无法转换表达式类型'com.dev.webservices.Clinic []'以返回类型'System.Collections.Generic.List'com.dev.services.dev.Clinic'”
为什么有任何想法?
以下是Web服务的方法:
public List<Clinic> GetSearchResults(string latitude, string longitude, int searchDistance)
{
var results = Clinic.GetClinicsNearLocation(latitude, longitude, searchDistance);
return results;
}
答案 0 :(得分:5)
似乎webservice方法定义如下:
Clinic[] GetSearchResults(coordinate.Latitude, coordinate.Longitude, searchDistance);
如果要将数组转换为列表,可以执行以下操作:
List<Clinic> clinics = new List<Clinic>(wsDental.GetSearchResults(coordinate.Latitude, coordinate.Longitude, searchDistance));
或使用ToList扩展方法:
List<Clinic> clinics = wsDental.GetSearchResults(coordinate.Latitude, coordinate.Longitude, searchDistance).ToList();
答案 1 :(得分:2)
问题是您网站中的服务参考。试试这个:
Right click the service in Service References
-> Configure Service Reference
-> in the Data Type group
-> change the Collection type to System.Collections.Generic.List
-> ok
确保右键单击服务引用和更新服务引用。
答案 2 :(得分:0)
因为wsDental.GetSearchResults
返回类型不是List。
尝试:
private static com.dev.webservices.Clinic[] GetClinicsNearLocation(Coordinate coordinate, int searchDistance)
{
var wsDental = new ProviderLocation_Dental();
com.dev.webservices.Clinic[] clinics = wsDental.GetSearchResults(coordinate.Latitude, coordinate.Longitude, searchDistance);
return clinics;
}
答案 3 :(得分:0)
wsDental.GetSearchResults正在返回一个数组(Clinic [])
你应该可以这样做:
List<Clinic> clinics = new List<Clinic>(wsDental.GetSearchResults(coordinate.Latitude, coordinate.Longitude, searchDistance));
答案 4 :(得分:0)
几乎可以肯定,因为GetSearchResults()
会返回Clinic
个对象的数组,而不是通用的List<Clinic>
。
您可能需要使用Array元素手动填充List,或使用接受IEnumerable<Clinic>
的构造函数重载(如@Darin和@McAden所示)。