0

以下のコードを使用して、同じタイプのコレクションのグループを単一のコレクションにマップできます。

AutoMapper.Mapper.CreateMap<Source, Destination>().ForMember(
                dest => dest.Drivers,
                opt => opt.MapFrom(src => src.BikeDrivers.Concat(src.CarDrivers).Concat(src.TruckDrivers))); 

上記のソリューションを使用すると、3 種類のドライバーすべてを 1 つのコレクションにマップできます。私の宛先オブジェクト (ドライバー) には、ドライバーの種類を識別するのに役立つ DriverType というプロパティがあります。(バイクドライバー/車ドライバー/トラックドライバー)

上記のコードでは、追加するコレクションに基づいて DriverType プロパティを設定する方法を示しています。

例:私はハードコードする必要があります

DriverType = CarDrivers コレクション項目の CarDriverDriverType = BikeDriverfor BikeDrivers コレクション項目。

前もって感謝します

4

1 に答える 1

1

DriverType プロパティを設定するには、ソース オブジェクトにこの知識が必要です。全体像は見えませんが、これはサンプルとして使用される可能性があります

using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            var s = new Source()
                        {
                            BikeDrivers = new List<BikeDriver>() {new BikeDriver()},
                            CarDrivers = new List<CarDriver>() {new CarDriver()},
                            TruckDrivers = new List<TruckDriver>() {new TruckDriver()},
                        };

            var d = new Destination();


            AutoMapper.Mapper.CreateMap<Source, Destination>().ForMember(
                dest => dest.Drivers,
                opt => opt.MapFrom(src => src.BikeDrivers.Concat<IDriver>(src.CarDrivers).Concat<IDriver>(src.TruckDrivers)));

            var result = AutoMapper.Mapper.Map(s, d);
        }

        public class Driver : IDriver
        {
            public string DriverType { get; set; }
        }

        public class Destination
        {
            public IEnumerable<IDriver> Drivers { get; set; }
        }

        public class Source
        {
            public IEnumerable<BikeDriver> BikeDrivers { get; set; }
            public IEnumerable<CarDriver> CarDrivers { get; set; }
            public IEnumerable<TruckDriver> TruckDrivers { get; set; }
        }

        public interface IDriver
        {
            string DriverType { get; set; }
        }

        public class BikeDriver : IDriver
        {
            public string DriverType
            {
                get { return "BikeDriver"; }
                set { throw new NotImplementedException(); }
            }
        }
        public class CarDriver : IDriver
        {
            public string DriverType
            {
                get { return "CarDriver"; }
                set { throw new NotImplementedException(); }
            }
        }
        public class TruckDriver : IDriver
        {
            public string DriverType
            {
                get { return "TruckDriver"; }
                set { throw new NotImplementedException(); }
            }
        }
    }
}
于 2012-06-03T10:44:31.340 に答える