在 LINQ 列表中获取对象百分比并将其映射到 JSON 的最佳方法是什么?

3
由于在Linq中使用了join,我得到了一个RoleViewModel对象列表。接下来我想要做的是获取列表中每个WorkRole的百分比,并将工作角色的百分比和名称映射到JSON格式。
因此,如果在var列表中有两个对象 - 一个具有RoleName“Role1”,另一个具有RoleName“Role2”,那么获得类似以下JSON的最佳方法是什么:
myObj = {
    "rolename":"Role1",
    "perc":50
    },
  {
    "rolename":"Role2",
    "perc":50
    },

这是我列表的查询语句:

var list= list1.
                    Join(db.WorkRolesUsersDetails,
                    o => o.WorkRoleId, od => od.WorkRoleId,
                    (o, od) => new
                    {
                        WorkRoleId = o.WorkRoleId,
                        RoleName = o.RoleName,
                        RoleDescription = o.RoleDescription,
                        CompanyId = o.CompanyId,
                        WRUDId = od.WRUDId,
                        UserDetailsId = od.UserDetailsId,
                        FocusStart = od.FocusStart,
                        FocusEnd = od.FocusEnd
                    }).ToList()
                    .Select(item => new RoleViewModel(
                       item.WorkRoleId,
                        item.RoleName,
                        item.RoleDescription,
                        item.CompanyId,
                        item.WRUDId,
                        item.UserDetailsId,
                        item.FocusStart,
                        item.FocusEnd)).ToList();

那么,有什么建议可以帮助我以最好、最简单的方式实现我想要的吗?我是c#的新手。

1个回答

2
它应该像这样工作:
var perclist = list.GroupBy(i=>i.RoleName)
      .Select(i=> 
            new { 
                 rolename=i.Key, 
                 perc = ((double)(i.Count()) / (double)(list.Count()) )*100
            });
var json = JsonConvert.SerializeObject(perclist);

我使用Json.NET进行序列化


非常感谢,回答得非常好! :) - Robert Ross

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接