我想用一个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是错的吗?
答案 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>