我怎么解决不能隐式转换类型System.Collections.Generic.List?

时间:2017-05-01 10:39:06

标签: c#

我在C#中有这个模型:

public class interfaceModel
{
    public string interfacename { get; set; }
    public long  id { get; set; }
}

并编写此代码:

public static List<interfaceModel> CompanyInterfaceFetch()
{
    var database = new DataBaseDataContext();
    var companyinterface = new CompanyInterface();

    var interfacelist =
                database.CompanyInterfaces.Select(x => new interfaceModel { interfacename = x.InterfaceName, id=x.id});
    return interfacelist.ToList();
}

// database model
public class interfaceModel
{
    public string interfacename { get; set; }
    public long id { get; set; }
}

现在我编写代码来调用该方法:

public static List<interfaceModel> interfacefetch()
{
    return Database.CompanyInterfaceFetch();
}

但在这一行:

return Database.CompanyInterfaceFetch();

我收到此错误:

  

错误CS0029:无法隐式转换类型&#39; System.Collections.Generic.List&#39;到&#39; System.Collections.Generic.List

我该如何解决这个问题?感谢。

3 个答案:

答案 0 :(得分:3)

您有两个具有相同名称的单独类。判断命名,这是两者的位置:

  • 控制器&gt;数据库&gt; interfaceModel
  • 模型&gt; interfaceModel

这两种类型虽然名称相同,甚至可能具有完全相同的字段,但是不可交换。删除它们中的任何一个并再次编译以检查错误以查看您必须进行的调整。

答案 1 :(得分:0)

您的错误很明确:

  

错误CS0029无法隐式转换

     

输入'System.Collections.Generic.List<Web.Controllers.Database.interfaceModel>'

     

'System.Collections.Generic.List<Web.Models.interfaceModel>'

这两个位置有两种相同的名称。

如果他们有相同的字段,那么你应该删除其中一个。如果它们不同,则需要修复代码中的导入,以便CompanyInterfaceFetch()interfacefetch()引用相同的类型。如有必要,请删除导入并指定完全限定的类名(如异常消息中所示)。

答案 2 :(得分:-1)

由于您在不同的命名空间中分布了两种类型,因此无法从一种类型转换为另一种类型。

从设计的角度来看,它看起来还不错!

解决此问题的方法之一是使用Automapper