Скопируйте значения свойств путем сопоставления имен свойств - PullRequest
1 голос
/ 12 октября 2011

У меня есть два объекта таблицы 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));

Это то, что я называю улучшением: -)

1 Ответ

2 голосов
/ 12 октября 2011

Попробуйте AutoMapper , я думаю, это то, что вы ищете ...

...