我有两个调用 Orders 和 ImportedOrders 的 LINQ 表对象,它们具有完全相同的属性,但 ImportedOrders 还有一个属性。导入后,订单获得 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
};
}
编辑:
按照Amittai Shapira的建议使用AutoMapper后,相关逻辑现在如下所示:
Mapper.CreateMap<Order, ImportedOrders>()
.ForMember(o => o.Uebergabe_Nr, mo => mo.UseValue(uebergabeNr));
这就是我所说的改进:-)