2011-10-12 122 views
0

我有两个LINQ表对象调用订单和ImportedOrders具有完全相同的属性,但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 
     }; 
    } 

编辑:

使用AutoMapper通过Amittai Shapira的建议后,相关逻辑,现在看起来是这样的:

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

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

回答

2

尝试AutoMapper,我认为这是你之后...

+0

那个看起来很有希望。我会试一试。 – VVS

+0

顺便说一句,它可能使用反射(没有看过代码),但界面不错,干净,工作... –