通过映射属性名称复制属性值

时间:2011-10-12 11:04:33

标签: c# properties mapping cloning

我有两个LINQ表对象调用Orders和ImportedOrders,它们具有完全相同的属性,但ImportedOrders还有一个属性。导入后,Order获取ImportedOrder,因此我必须将值复制到新的ImportedOrders对象中。

我想摆脱这种过于丑陋的方法 - 最好没有反思。我认为可以用表达式完成,但我使用表达式树不仅仅是生锈的。

    private static ImportedOrders MapNewOrder(Order order, int uebergabeNr)
    {
        return new ImportedOrders
        {
            DFÜ_PARTNER_ID = order.DFÜ_PARTNER_ID,
            KD_BESTELL_NR = order.KD_BESTELL_NR,
            BEST_DAT = order.BEST_DAT,
            LIEF_DAT = order.LIEF_DAT,
            ILN_KUNDE = order.ILN_KUNDE,
            KUNDE_NR = order.KUNDE_NR,
            ILN_RG_EMPFG = order.ILN_RG_EMPFG,
            RG_EMPFG_NR = order.RG_EMPFG_NR,
            ILN_LIEFERANT = order.ILN_LIEFERANT,

            // ... 30 more properties ...

            Uebergabe_Nr = uebergabeNr // < the only difference
        };
    }

修改

按照AutoMapper的建议使用Amittai Shapira后,相关逻辑现在看起来像这样:

Mapper.CreateMap<Order, ImportedOrders>()
    .ForMember(o => o.Uebergabe_Nr, mo => mo.UseValue(uebergabeNr));

这就是我所说的改进: - )

1 个答案:

答案 0 :(得分:2)

试试AutoMapper,我认为这就是你所追求的......