У меня есть два объекта таблицы 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
};
}
EDIT:
После использования AutoMapper в соответствии с предложением Amittai Shapira соответствующая логика теперь выглядит следующим образом:
Mapper.CreateMap<Order, ImportedOrders>()
.ForMember(o => o.Uebergabe_Nr, mo => mo.UseValue(uebergabeNr));
Это то, что я называю улучшением: -)