繁体   English   中英

将父类数据分配给子列表

[英]Assign parent class data to child list

我有父类

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

            }
}

一切正常。

您没有提到您使用实体框架和 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();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM