在MVC C#中可能存在DTO问题

时间:2016-01-17 20:56:36

标签: c# asp.net-mvc casting union dto

每当我尝试编写一个排除用户已经拥有的服务的方法时,我就会收到此错误。所以我有两个列表,List1是所有服务,List2是用户拥有的所有服务的列表。所以我在两个名单上做了一个联盟排除,但是我试着去尝试#/ p>

  

无法将类型'System.Collections.Generic.List'隐式转换为'System.Collections.Generic.List'C:.. \ Controllers \ ServicesController.cs

private List<ServiceDTO> getList(ServDTO.ServDTO[] services, IEnumerable<string> servObtained)
{
    var allServices = servicesClient.GetallServices();
    var allServicesCode = (from s in allServices select s.serviceCode).ToList();
    IEnumerable<String> list1 = allServicesCode;
    IEnumerable<String> list2 = servObtained;
    var listFinal = list1.Union(list2);
    List<ServiceDTO> list = listFinal.ToList();

    return (list);
}

任何人都可以解释为什么我会遇到这个问题?

1 个答案:

答案 0 :(得分:1)

您返回了错误的类型,将代码更改为返回正确的类型。编译器不知道如何将string转换为ServiceDTO您必须自己完成。

更改这两行:

List<ServiceDTO> list = listFinal.ToList();
return (list);

使用:

 return listFinal.Select(x=>new ServiceDTO(){serviceCode = x})ToList();

返回List<ServiceDTO>,目前您返回List<string>,而您的方法返回类型为List<ServiceDTO>