【问题标题】:Trouble with DTO in MVC C# possible casting issueMVC C#中的DTO问题可能的转换问题
【发布时间】:2016-01-17 20:56:35
【问题描述】:

每次我尝试编写一个排除用户已经拥有的服务的方法时,我都会收到此错误。所以我有两个列表,List1 是所有服务,List2 是用户拥有的所有服务的列表。所以我在这两个列表上做了一个联合排除,但每次我尝试 com

无法将类型“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);
}

谁能解释一下我为什么会遇到这个问题?

【问题讨论】:

  • 你将List&lt;string&gt; 分配给List&lt;DTO&gt; 这显然是错误的

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


【解决方案1】:

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

改变这两行:

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

与:

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

返回List&lt;ServiceDTO&gt;,当前你返回List&lt;string&gt;,而你的方法返回类型是List&lt;ServiceDTO&gt;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-17
    • 2013-10-16
    • 1970-01-01
    相关资源
    最近更新 更多