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

我是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);
        }

DB上下文代码:

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; }
  }

最佳答案 由于错误表明它有两个类型同名的问题,当我们只期待一个.命名空间是我们的线索:

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

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

首先:有两个共享相同名称并属于不同名称空间的类吗?随着项目的发展,这很容易实现!

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

点赞