2011-10-12 163 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

順便說一句,它可能使用反射(沒有看過代碼),但界面不錯,乾淨,工作... –