将父类数据分配给子列表
本文关键字:列表 分配 父类 数据 | 更新日期: 2023-09-27 18:19:15
我有父类
public class ImageInfo {}
和子
public class ImageInfoVM: ImageInfo {
//fields
public ImageInfoVM(ImageInfo img)
{
this.name = img.name; //etc
}
我正试图从数据库中读取数据与IEnumerable<ImageInfo> model = db.ImageInfo.ToList()
并将此数据分配给ImageInfoVM iivm
,但没有成功。
我已经尝试了这个解决方案https://stackoverflow.com/a/9885823/632224,我认为这是我需要做的,但我得到错误The class 'ImageInfoVM' has no parameterless constructor
。在这个查询中
List<ImageInfoVM> iivm = model.Select(m => new ImageInfoVM(m)).ToList();
有人能帮忙吗?
是不是打错了?
检查构造函数名称 ImageInfoVVM
而不是ImageInfoVM
public class ImageInfoVM: ImageInfo {
//fields
public ImageInfoVVM(ImageInfo img)
{
this.name = img.name; //etc
}
如果没有"无参数构造函数"怎么办?
创建无参数构造函数
我给我的子类添加了空构造函数所以现在它看起来像
public class ImageInfoVM: ImageInfo {
//fields
public ImageInfoVM()
{ }
public ImageInfoVM(ImageInfo img)
{
this.name = img.name; //etc
}
}
一切都很顺利
您没有提到您使用Entity框架和LINQ to SQL。
你的问题是LINQ to SQL不支持在Select
语句中带参数的构造函数。
您的查询正在使用List
但不使用IEnumerable
类型。
您需要创建模型的List
List<ImageInfo> model = db.ImageInfo.ToList();
那么你的原始代码也可以在没有参数构造函数的情况下工作
List<ImageInfoVM> iivm = model.Select(m => new ImageInfoVM(m)).ToList();