无法将linq结果隐式转换为viewmodel列表

时间:2015-04-19 21:03:51

标签: c# asp.net asp.net-mvc linq

我是MVC的新手并且正在努力实现ViewModel来查询多个表。最初我的设置工作完美但现在重新加载项目我收到编译错误,如下所示:

Cannot implicitly convert type 'System.Collections.Generic.List<CATEGORY>' to 'System.Collections.Generic.List<TestProject.Models.CATEGORY>'

ViewModel代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace TestProject.Models
{
  public class COMPCATEGORY
  {
    public List<COMP> Comp { get; set; }
    public List<CATEGORY> Category { get; set; }
  }
}

控制器代码:

namespace TestProject.Controllers
{
    public class COMPsController : Controller
    {
        private mattbeaneyEntities1 db = new mattbeaneyEntities1();

        // GET: COMPs
        public ActionResult Index()
        {
          COMPCATEGORY viewModel = new COMPCATEGORY();
          viewModel.Category = db.CATEGORies.ToList();
          viewModel.Comp = db.COMPs.ToList();
          return View(viewModel);
        }

数据库上下文代码:

using System;
using System.Data.Entity;
using System.Data.Entity.Infrastructure;


  public partial class mattbeaneyEntities1 : DbContext
  {
    public mattbeaneyEntities1()
      : base("name=mattbeaneyEntities1")
    {
    }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
      throw new UnintentionalCodeFirstException();
    }

    public virtual DbSet<CATEGORY> CATEGORies { get; set; }
    public virtual DbSet<COMP> COMPs { get; set; }
  }

1 个答案:

答案 0 :(得分:2)

由于错误表明它有两个类型同名的问题,当我们只期待一个。名称空间是我们的线索:

Cannot implicitly convert type 'System.Collections.Generic.List<CATEGORY>' to 'System.Collections.Generic.List<TestProject.Models.CATEGORY>'

在这种情况下,通常我会检查几件事情:

首先:是否有两个共享相同名称且属于不同命名空间的类?随着项目的发展,这很容易做到!

辅助:主项目命名空间是否已更改?有时由于一些重构,我们更改了项目名称,最后在bin文件夹中有两个.dll文件,这些文件包含我们所有类的副本 - 删除旧文件!