1

Orders と ImportedOrders を呼び出す 2 つの LINQ テーブル オブジェクトがありますが、これらはまったく同じプロパティを持っていますが、ImportedOrders にはもう 1 つのプロパティがあります。インポート後、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
        };
    }

編集:

Amittai Shapiraの提案に従って AutoMapperを使用すると、関連するロジックは次のようになります。

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

それが私が改善と呼んでいるものです:-)

4

1 に答える 1

2

AutoMapperを試してみてください。これがあなたが求めているものだと思います...

于 2011-10-12T11:06:35.140 に答える