如何使用linq复制公共基本属性

本文关键字:属性 何使用 linq 复制 | 更新日期: 2023-09-27 18:06:22

我有2个不同的子类。主要原因是数据库字段与进入Gui的字段不同。所以它们都有共同的父类。

Class DbChild1 : Parent1
{ ....
}
Class GuiChild1 : Parent1
{....
}

我有一个DbChild1的IEnumerable结果集。我正试图使用Linq来复制数据。但是,由于确实有很多属性,我在不止一个地方为其他类似的DBclass和Gui类这样做,我想知道是否有任何快捷方式来复制共同的父属性,而不是一个接一个地复制。

事先感谢你的帮助。

欢呼

如何使用linq复制公共基本属性

如果你还没有检查过AutoMapper,你可以试试这个:

class Program
{
    static void Main(string[] args)
    {
        var dbChild1ResultSet = new[]
        {
            new DbChild1()
            {
                Field1 = "1",
                Field2 = "2",
                DbChild1Field1 = "3"
            },
            new DbChild1()
            {
                Field1 = "11",
                Field2 = "22",
                DbChild1Field1 = "33"
            },
        };
        var guiChild1ResultSet = dbChild1ResultSet.Select(x => new GuiChild1(x)
        {
            GuiChild1Field1 = x.DbChild1Field1
        });
    }
}
public class Parent1
{
    public string Field1 { get; set; }
    public string Field2 { get; set; }
    public Parent1()
    {
    }
    public Parent1(Parent1 toCopyFrom)
    {
        Field1 = toCopyFrom.Field1;
        Field2 = toCopyFrom.Field2;
    }
}
public class DbChild1 : Parent1
{
    public string DbChild1Field1 { get; set; }
    public DbChild1()
    {
    }
    public DbChild1(Parent1 toCopyFrom) : base(toCopyFrom)
    {
    }
}
public class GuiChild1 : Parent1
{
    public string GuiChild1Field1 { get; set; }
    public GuiChild1()
    {
    }
    public GuiChild1(Parent1 toCopyFrom) : base(toCopyFrom)
    {
    }
}