2017-02-05 81 views
3

由於linq中的join我得到了RoleViewModel對象的列表。我想要做的是獲取列表中每個WorkRole的百分比,並將工作角色的百分比和它的名稱映射到json。獲取linq列表中的對象的百分比並將其映射到JSON的最佳方法是什麼?

所以,如果我有兩個對象總共var list - 一個具有角色名「role1上」和其他有角色名「基於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#的新手。

回答

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系列化

+0

非常感謝,偉大的答案! :) –

相關問題