C# 以逗号分隔的字符串到int Automapper列表 公共部分类源() { ............... 公共字符串赋值对象{get;set;} ................... } 公共部分类目的地 { ............... 公共列表资源{get;set;} ................... }

C# 以逗号分隔的字符串到int Automapper列表 公共部分类源() { ............... 公共字符串赋值对象{get;set;} ................... } 公共部分类目的地 { ............... 公共列表资源{get;set;} ................... },c#,automapper,C#,Automapper,我像这样映射这些类 public partial class Source() { ............... public string Assignees { get; set; } ................... } public partial class Destination { ............... public List<int> Resources { get; set; } ................

我像这样映射这些类

public partial class Source()
{
   ...............
   public string Assignees { get; set; }
   ...................
}
public partial class Destination
{
   ...............
   public List<int> Resources { get; set; }
   ...................
}
Mapper.CreateMap().ForMember(x=>x.DestID,y=>y.MapFrom(z=>z.SrcID))//Automapper版本4.2.1.0
我得到了所有值的预期结果,但问题是源代码中的字段赋值对象是逗号分隔的字符串。它包含像“1,4,6,8”这样的数据

我所期望的是:

当映射发生时,我希望它们转换为int的列表


请提供任何有价值的投入。谢谢。

尝试在mapper类中使用方法进行解析:

Mapper.CreateMap<Source, Destination>().ForMember(x => x.DestID, y => y.MapFrom(z => z.SrcID));//Automapper version 4.2.1.0
Mapper.CreateMap()
.ForMember(x=>x.Resources,y=>y.MapFrom(z=>getAssignees(z.Assignees)));
私有列表getAssignees(字符串模型)
{
if(string.IsNullOrEmpty(model))
{
返回null;
}
返回model.Split(',).Select(int.Parse.ToList();
}

尝试在mapper类中使用方法进行解析:

Mapper.CreateMap<Source, Destination>().ForMember(x => x.DestID, y => y.MapFrom(z => z.SrcID));//Automapper version 4.2.1.0
Mapper.CreateMap()
.ForMember(x=>x.Resources,y=>y.MapFrom(z=>getAssignees(z.Assignees)));
私有列表getAssignees(字符串模型)
{
if(string.IsNullOrEmpty(model))
{
返回null;
}
返回model.Split(',).Select(int.Parse.ToList();
}

通常,要将
字符串
转换为
int
列表,我会使用
Linq

Mapper.CreateMap<Source, Destination>()
       .ForMember(x => x.Resources , y => y.MapFrom(z => getAssignees(z.Assignees)));



 private  List<int> getAssignees(string model)
        {

            if (string.IsNullOrEmpty(model))
            {
                return null;
            }

            return model.Split(',').Select(int.Parse).ToList();

        }

然后您可以以任何方式使用列表:)

通常,要将
字符串
转换为
int
列表,我将使用
Linq

Mapper.CreateMap<Source, Destination>()
       .ForMember(x => x.Resources , y => y.MapFrom(z => getAssignees(z.Assignees)));



 private  List<int> getAssignees(string model)
        {

            if (string.IsNullOrEmpty(model))
            {
                return null;
            }

            return model.Split(',').Select(int.Parse).ToList();

        }

然后,您可以以任何方式使用列表:)

这是字符串解析,而不是对象或属性的映射。应该有一种方法在映射中指定转换函数我同意@PanagiotisKanavos,这是一种反模式,因为映射程序应该是哑的,因此您可能希望抵制在它们内部放置太多逻辑的诱惑。这是字符串解析,而不是对象或属性的映射。应该有一种方法在映射中指定转换函数我同意@PanagiotisKanavos,这是一种反模式,因为映射程序应该是哑的,因此您可能希望抵制在它们内部放入太多逻辑的诱惑。这不起作用。不能使用
Cast
将字符串转换为整数。改用
Select(int.Parse)
。很好的解决方案,谢谢。只有当我将方法设置为静态时,它才对我有效。这不起作用。不能使用
Cast
将字符串转换为整数。改用
Select(int.Parse)
。很好的解决方案,谢谢。只有当我将方法设置为静态时,它才对我有效。