使用webservice返回的List发出问题

时间:2009-07-15 16:26:28

标签: c# asp.net web-services wsdl

我有一个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;
}

5 个答案:

答案 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所示)。