2016-01-17 26 views
1

每當我嘗試編寫一個排除用戶已經擁有的serivce的方法時,就會出現此錯誤。所以我有兩個列表,List1是所有服務,List2是用戶擁有的所有服務的列表。所以我做了聯盟排除在兩份名單,但evertime我嘗試COMDTO在MVC中的問題C#可能的鑄造問題

無法隱式轉換類型「System.Collections.Generic.List」到「System.Collections.Generic.List」 C:.. \控制器\ 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); 
} 

任何人都可以提供一些線索到爲什麼IM運行到這個問題?

+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>