无法将类型隐式转换为'System.Collections.Generic.List

时间:2015-02-20 15:07:00

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

我想用一个DateTime属性填充一个viewmodel,还有一个类别列表。

视图模型:

public class TourCategoryVM
{
    public DateTime Date { get; set; }
    public List<TourCategoryList> TourCategoryList { get; set; }
}

public class TourCategoryList
{
    public int TourCategoryId { get; set; }
    public string TourType { get; set; }
}

域名模型:

public class TourCategory
{
    public int TourCategoryId { get; set; }
    public string TourType { get; set; }
    public virtual ICollection<Tour> Tour { get; set; }
}

我以为我可以使用这段代码轻松填充它:

        var viewModel = new TourCategoryVM();
        viewModel.TourCategoryList = db.TourCategories();

但是,我收到了错误:

  

错误1无法隐式转换类型
  System.Data.Entity.DbSet<tb.Models.TourCategory>
  System.Collections.Generic.List<tb.Models.ViewModels.TourCategoryList>

我的ViewModel是错的吗?

1 个答案:

答案 0 :(得分:7)

db.TourCategories()方法不会返回TourCategoryList的集合,因此您需要做一些工作才能将任何类TourCategories()返回转换为TourCategoryList ,使用LINQ Select()方法。

viewModel.TourCategoryList = db.TourCategories()
                               .Select(tc => new TourCategoryList
                                             {
                                                 TourCategoryId = tc.TourCategoryId,
                                                 TourType = tc.TourType
                                             })
                               .ToList();

我假设TourCategories()返回TourCategory的集合。


如果我可以提出另一个建议,您可能需要重命名TourCategoryList。我知道你试图将它与其他TourCategory类区分开来,但是看一下你的代码的人可能会(乍一看)假设List<TourCategoryList>是一个列表列表,仅来自名称。< / p>