将父类数据分配给子列表

时间:2015-10-24 16:44:13

标签: c# linq oop inheritance

我有父类

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();

有人可以帮忙吗?

3 个答案:

答案 0 :(得分:-1)

这可能是一个错字吗?

检查您的构造函数名称 ImageInfoVVM而不是ImageInfoVM

public class ImageInfoVM: ImageInfo {

//fields
    public ImageInfoVVM(ImageInfo img)
    {
        this.name = img.name; //etc
    }

答案 1 :(得分:-1)

当你没有&#34;无参数构造函数&#34时,你会怎么做?

您可以创建无参数构造函数。

我在我的子类中添加了空构造函数,所以它现在看起来像

     public class ImageInfoVM: ImageInfo {

    //fields
     public ImageInfoVM()
            { }
     public ImageInfoVM(ImageInfo img)
            {
                this.name = img.name; //etc

            }
}

并且一切都运作良好..

答案 2 :(得分:-1)

您没有提到您使用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();