如何使用AutoMapper对相似项目进行分组

时间:2018-01-23 11:57:05

标签: c# automapper

我正在使用automapper。并试图做这个地图

public class Source
{
    public string UserName {get;set;}
    public string AppName {get;set;}
    public string Role {get;set;}
    public string Action {get;set;}
}

public class Destination
{
    public List<string> UserNames {get;set;}
    public string AppName {get;set;}
    public string Role {get;set;}
    public List<string> Actions {get;set;}
}

我们的想法是将具有相似属性的项目组合在一起:AppName,Role。

示例:

列出来源=

  1. {UserName =“John”; AppName =“MyApplication”;角色=“管理员”; Action =“Add”};
  2. {UserName =“Elis”; AppName =“MyApplication”;角色=“管理员”; Action =“Edit”};
  3. 我想要地图:

    列出目的地=

    1. {UserNames = [“John”,“Elis”]; AppName =“MyApplication”;角色=“管理员”;操作= [“添加”,“编辑”]};
    2. 我该怎么做?我需要从目标到目的地和向后地图。

1 个答案:

答案 0 :(得分:0)

我知道这不是自动播放器,而是提供一个简单的替代方案

  

注意:假设您希望按RoleAppName

进行实际分组
var destinations = list.GroupBy(x => new {x.AppName,x.Role})
                        .Select(x => new Destination
                            {
                                AppName = x.Key.AppName,
                                Role = x.Key.Role,
                                UserNames = x.Select(y => y.UserName).ToList(),
                                Actions = x.Select(y => y.Action).ToList()
                            })
                        .ToList();