Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Automapper地图采集<;T>;对单个具体对象_C#_Mapping_Automapper_Automapper 6 - Fatal编程技术网

C# Automapper地图采集<;T>;对单个具体对象

C# Automapper地图采集<;T>;对单个具体对象,c#,mapping,automapper,automapper-6,C#,Mapping,Automapper,Automapper 6,如何使用automapper将对象集合映射到具体类型的单个对象 样本: 型号: public class SystemOptionsModel { public string OptionID { get; set; } public string OptionValue { get; set; } } DTO: 我尝试使用以下映射配置将SystemOptions Model的ICollection映射到一个SystemOptions DTO: CreateMap<Sy

如何使用automapper将对象集合映射到具体类型的单个对象

样本:

型号:

public class SystemOptionsModel
{
    public string OptionID { get; set; }
    public string OptionValue { get; set; }
}
DTO:

我尝试使用以下映射配置将SystemOptions Model的ICollection映射到一个SystemOptions DTO:

 CreateMap<SystemOptionsModel, SystemOptionsDto>()
           .ForMember(dest => dest.Deliverymode, o =>
           {

               o.Condition((src) => { return src.OptionID.Trim().ToLower().Equals("someString"); });
               o.MapFrom(srs => (Deliverymode)Enum.Parse(typeof(Deliverymode), srs.OptionValue.Trim()));
           });
CreateMap()
.FormMember(目标=>dest.Deliverymode,o=>
{
o、 条件((src)=>{return src.OptionID.Trim().ToLower().Equals(“someString”);});
o、 MapFrom(srs=>(Deliverymode)Enum.Parse(typeof(Deliverymode),srs.OptionValue.Trim());
});
结果,我得到了一个DTO列表,其中源集合中的每个项对应一个项

我也试过:

CreateMap<SystemOptionsModel, SystemOptionsDto>()
           .ForMember(dest => dest.Deliverymode, o =>
           {
               o.MapFrom(src => src.OptionID.Trim().ToLower().Equals("someString") ? (Deliverymode?)Enum.Parse(typeof(Deliverymode), src.OptionValue.Trim()) : null);
           });
CreateMap()
.FormMember(目标=>dest.Deliverymode,o=>
{
o、 MapFrom(src=>src.OptionID.Trim().ToLower().Equals(“someString”)?(Deliverymode?)枚举.Parse(typeof(Deliverymode),src.OptionValue.Trim()):null);
});

结果也是一个SystemOptionsDto列表,而不是一个SystemOptionsDto。

根据解释,如果集合包含多个OptionID等于“someValue”的项,则不清楚如何转换值。也许这是不可能的。 解决办法是:

cfg.CreateMap<ICollection<SystemOptionsModel>, SystemOptionsDto>()
    .ForMember(dest => dest.Deliverymode, opt => opt.ResolveUsing(
        src => src.Where(i => i.OptionID.Trim().ToLower() == "someString")
                    .Select(option => (Deliverymode?)Enum.Parse(typeof(Deliverymode), option.OptionValue.Trim()))
                    .FirstOrDefault()));
cfg.CreateMap()
.FormMember(dest=>dest.Deliverymode,opt=>opt.ResolveUsing(
src=>src.Where(i=>i.OptionID.Trim().ToLower()==“someString”)
.Select(option=>(Deliverymode?)Enum.Parse(typeof(Deliverymode),option.OptionValue.Trim())
.FirstOrDefault());
This
src.OptionID.Trim().ToLower().Equals(“someString”)
将始终为false当然,监督:)。。。
cfg.CreateMap<ICollection<SystemOptionsModel>, SystemOptionsDto>()
    .ForMember(dest => dest.Deliverymode, opt => opt.ResolveUsing(
        src => src.Where(i => i.OptionID.Trim().ToLower() == "someString")
                    .Select(option => (Deliverymode?)Enum.Parse(typeof(Deliverymode), option.OptionValue.Trim()))
                    .FirstOrDefault()));