Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.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# 映射列表的属性<;T>;使用自动映射器_C#_String_Linq_Automapper - Fatal编程技术网

C# 映射列表的属性<;T>;使用自动映射器

C# 映射列表的属性<;T>;使用自动映射器,c#,string,linq,automapper,C#,String,Linq,Automapper,使用Automapper,我想映射一个属性,该属性是一个类型为Employee的列表,使用string.Join()生成一个以逗号分隔的员工权限名称字符串。以下是我正在使用的类: public class MappedEmployee { public string Name { get; set; } public string RightNames { get; set; } } public class Employee { public string 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; }
}
公共类MappedEmployee
{
公共字符串名称{get;set;}
公共字符串RightNames{get;set;}
}
公营雇员
{
公共字符串名称{get;set;}
公共列表权限{get;set;}
}
公共阶级权利
{
公共字符串名称{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);
Mapper.CreateMap()
.ForMember(d=>d.RightNames,o=>o.MapFrom(s=>s.Rights.SelectMany(r=>string.Join(“,”,r.Name)));
var employee=新员工
{
Name=“Joe Schmoe”,
权限=新列表
{
新权限{Name=“Admin”},
新权限{Name=“User”},
}
};
var mappedEmployee=Mapper.Map(雇员);
然而,它正在产生以下结果:

System.Linq.Enumerable+<SelectManyIterator>d__14`2[Employee.Right,System.Char]
System.Linq.Enumerable+d_u14`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))));
Mapper.CreateMap()
.ForMember(d=>d.RightNames,o=>o.ResolveUsing(s=>string.Join(“,”,s.Rights.Select(r=>r.Name)));

产生相同结果的