2017-02-05 5 views
3

joinの結果がlinqになりました。私はRoleViewModelオブジェクトのリストを取得しています。後でやりたいことは、リスト内の各WorkRoleの割合を取得し、仕事の役割のパーセンテージとその名前をjsonにマップすることです。linqリストのオブジェクトのパーセンテージを取得してJSONにマップする最良の方法は何ですか?

私は2つのオブジェクトがvar listに合計しているのであれば、 - 1は、ロール名「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); 

IシリアライズするためのユーザーJson.NET

+0

おかげでたくさん、素晴らしい答えを! :) –

関連する問題