2016-09-22 105 views
0

我有一个查询,以矩阵格式按扇区返回每个国家和地区的国家和部门以及百分比。我似乎无法找到一个linq查询,将返回数据以这种格式显示。从数据库中我的数据是这样的:如何在矩阵中显示数据

Canada | Education | 20 
Canada | Medical | 80 
Mexico | Education | 40 
Mexico | Medical | 60 

,我需要这样的显示出来:

    Education | Medical 
Canada     20 | 80 
Mexico     40 | 60 

我需要组上的国家,但显示为部门列。这是我的查询:

var query = from p in ctx.Programs 
         group p by p.Country.Name into g 
         select new 
         { 
          rowKey = g.Key, 
          rowData = g.Select(s => new { Sector = s.Sector.NameEng, Percentage = s.BUDGET_PCT }) 
         }; 
      return query; 

但这不起作用。

+0

你如何检查它是教育还是医疗? –

+1

你的意思是什么“不起作用”?有没有错误,或者你只是得到空白值? –

+0

假设它可以通过'p.Country.Name'这一行,抢先建议尝试'ctx.Programs.Include(“Sector”)' –

回答

0

我得到了一个解决方案。我创建了一个有两个属性的类,一个保存rowKey,一个保存rowData的List,然后为rowData创建一个类。我回来了,然后将其添加到Html,它正确显示矩阵:

<table id="tblMatrix"> 
         <tr> 
          <th></th> 
          @foreach (var cs in Model.CountrySectors.FirstOrDefault().SectorList) 
          { 
           <th>@cs.Sector</th> 
          } 
         </tr> 
         @foreach (var cs in Model.CountrySectors) 
         { 
          <tr> 
           <td>@cs.Country</td> 
           @foreach (var s in cs.SectorList) 
           { 
            <td>@s.Percentage</td> 
           } 
          </tr> 
         } 
        </table> 

和这个工程。希望它能帮助那里的人。