【问题标题】:What is the best way to get the percentage for an object in linq list and map it to JSON?获取 linq 列表中对象的百分比并将其映射到 JSON 的最佳方法是什么?
【发布时间】:2017-06-22 11:40:07
【问题描述】:

由于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# 新手。

【问题讨论】:

    标签: c# json linq list


    【解决方案1】:

    它应该是这样工作的:

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

    【讨论】:

    • 非常感谢,很好的回答! :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多