代码之家  ›  专栏  ›  技术社区  ›  Bill Martin

WebService返回的问题使用列表

  •  0
  • Bill Martin  · 技术社区  · 16 年前

    我有一个WebService,它返回某个lat/long附近的“诊所”列表。但是,在我的调用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 回复  |  直到 16 年前
        1
  •  5
  •   Darin Dimitrov    16 年前

    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();
    
        2
  •  2
  •   blu    16 年前

    该问题是您网站上的服务参考。试试这个:

    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
    

    确保右键单击服务引用并更新服务引用。

        3
  •  0
  •   marcc    16 年前

    因为 wsDental.GetSearchResults 返回类型不是列表。

    尝试:

    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;
    }
    
        4
  •  0
  •   McAden    16 年前

    wsdental.getSearchResults正在返回数组(clinic[])

    你应该能够做到:

    List<Clinic> clinics = new List<Clinic>(wsDental.GetSearchResults(coordinate.Latitude, coordinate.Longitude, searchDistance));
    
        5
  •  0
  •   Cerebrus    16 年前

    几乎可以肯定,因为 GetSearchResults() 返回的数组 Clinic 对象而不是一般对象 List<Clinic> .

    您可能需要手动用数组元素填充列表,或者使用接受 IEnumerable<Clinic> (如@darin和@mcaden所示)。