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)
。很好的解决方案,谢谢。只有当我将方法设置为静态时,它才对我有效。