【问题标题】:cannot implicitly convert type system.collections.generic.list [closed]无法隐式转换类型 system.collections.generic.list [关闭]
【发布时间】:2017-04-19 23:03:02
【问题描述】:

如果我问的问题很明显,我提前道歉。我正在从常规的 asp.net 编程切换到 MVC,从 vb 切换到 c#。很好,但我还有很多东西要学。

我收到以下错误

无法将类型 system.collections.generic.list 隐式转换为 system.collections.generic.list。存在隐式转换(您是否缺少演员表?)

这就是我的控制器中的内容

 public ActionResult CityForm()
    {

        var states= _context.Departamentos.ToList();
        var viewModel = new CityFormViewModel
        {
            City= new City(),
            States= states
        };
        return View();
    }

我的 viewModel 如下所示

  public IEnumerable<State> States{ get; set; }

  public City City{ get; set; }

我查看了其他有类似错误的帖子,但原因似乎与我所拥有的不同。我之前在一个不同的应用程序中使用过这种方法并且效果很好,我在这个应用程序中所做的不同之处在于我添加了一个 ADO.NET 实体数据模型,以与 Telerik 控件一起使用。

我还注意到,在我的其他应用程序中,当我将变量悬停在控制器中时,我收到以下消息(** 之间是我将鼠标悬停在的位置):

States = **states**
(local variable)List<State> states

但如果我将鼠标悬停在应用程序中出现错误的同一位置,我会收到不同的消息

States = **states**
(local variable)List<Models.State> states

如您所见,在 State 前面加上 Models。

我非常感谢我能得到的任何帮助。谢谢。

【问题讨论】:

  • project.models.state 不是 project.state(它们在不同的程序集中)。您的视图模型属性需要为public IEnumerable&lt;Project.Models.State&gt; States { get; set; } - 与您的查询返回相同(并停止使用var!)
  • 我认为他使用 var 的方式没有任何问题。如果他没有使用 var,他会得到同样的编译器错误。因为他使用的是 var,所以他必须修复更少的代码。
  • @bit2know 我认为var 的问题在这种情况下很明显:它使查看类型不匹配变得更加困难。
  • 到目前为止的问题大致是“为什么不同的类型不同”......而答案“因为它们不同”并不完全清楚......一些澄清为什么你期望在“项目”之间进行静默转换.models.state" 和 "project.state" (这至少可以在一定程度上解释为什么您希望两个列表兼容 - 而且您可能知道它们不能兼容 - stackoverflow.com/questions/5881677/…)
  • @BJMyers 也许。在进行隐式转换时,最好详细说明您使用的类型。但我不认为摆脱 var 会阻止这个问题。就帮助他修复它而言,编译错误消息的作用更大。迟早他会克服这样的小错误,不应该害怕使用var。第二个 var 非常好。使用new 时指定变量类型完全是多余的。

标签: c# asp.net-mvc entity-framework


【解决方案1】:

您在不同位置拥有相同的班级名称。如果要分配值,请注意它们需要属于同一类型。

在您的情况下,您必须选择 IEnumerable&lt;project.state&gt; 或 IEnumerable&lt;project.models.state&gt; 只是不要将 project.state 分配给 project.models.state

【讨论】:

  • 太棒了,非常感谢您的帮助。我
  • 很高兴我能帮上忙
猜你喜欢
  • 2021-09-07
  • 2015-12-07
  • 1970-01-01
  • 1970-01-01
  • 2017-10-06
  • 1970-01-01
  • 2013-05-17
  • 2021-11-22
  • 1970-01-01
相关资源
最近更新 更多