使用 Automapper 映射列表 <T> 的 A 属性
Mapping A Property Of List<T> Using Automapper
使用 Automapper,我想映射一个 属性,它是一个类型为 Employee 的列表,使用 string.Join() 来生成以逗号分隔的员工权利名称字符串。这是我正在使用的 类:
public class MappedEmployee
{
public string Name { get; set; }
public string RightNames { get; set; }
}
public class Employee
{
public string Name { get; set; }
public List<Right> Rights { get; set; }
}
public class Right
{
public string Name { get; set; }
}
这是我的代码:
Mapper.CreateMap<Employee, MappedEmployee>()
.ForMember(d => d.RightNames, o => o.MapFrom(s => s.Rights.SelectMany(r => string.Join(", ", r.Name))));
var employee = new Employee
{
Name = "Joe Schmoe",
Rights = new List<Right>
{
new Right { Name = "Admin" },
new Right { Name = "User" },
}
};
var mappedEmployee = Mapper.Map<Employee, MappedEmployee>(employee);
但是,它会产生以下结果:
System.Linq.Enumerable+<SelectManyIterator>d__14`2[Employee.Right,System.Char]
我该怎么做才能获得以逗号分隔的员工权限字符串?
尝试使用 ResolveUsing
并将 string.Join
放在选择之前:
Mapper.CreateMap<Employee, MappedEmployee>()
.ForMember(d => d.RightNames, o => o.ResolveUsing(s => string.Join(", ",s.Rights.Select(r => r.Name))));
使用 Automapper,我想映射一个 属性,它是一个类型为 Employee 的列表,使用 string.Join() 来生成以逗号分隔的员工权利名称字符串。这是我正在使用的 类:
public class MappedEmployee
{
public string Name { get; set; }
public string RightNames { get; set; }
}
public class Employee
{
public string Name { get; set; }
public List<Right> Rights { get; set; }
}
public class Right
{
public string Name { get; set; }
}
这是我的代码:
Mapper.CreateMap<Employee, MappedEmployee>()
.ForMember(d => d.RightNames, o => o.MapFrom(s => s.Rights.SelectMany(r => string.Join(", ", r.Name))));
var employee = new Employee
{
Name = "Joe Schmoe",
Rights = new List<Right>
{
new Right { Name = "Admin" },
new Right { Name = "User" },
}
};
var mappedEmployee = Mapper.Map<Employee, MappedEmployee>(employee);
但是,它会产生以下结果:
System.Linq.Enumerable+<SelectManyIterator>d__14`2[Employee.Right,System.Char]
我该怎么做才能获得以逗号分隔的员工权限字符串?
尝试使用 ResolveUsing
并将 string.Join
放在选择之前:
Mapper.CreateMap<Employee, MappedEmployee>()
.ForMember(d => d.RightNames, o => o.ResolveUsing(s => string.Join(", ",s.Rights.Select(r => r.Name))));