繁体   English   中英

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

[英]What is the best way to get the percentage for an object in linq list and map it to JSON?

作为linq中的join的结果,我得到了一个RoleViewModel对象列表。 我想要做的是获取列表中每个WorkRole的百分比,并将工作角色的百分比和名称映射到json。

所以,如果我在var list总共有两个对象 - 一个具有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#的新手。

它应该像那样工作:

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进行序列化

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM