转换行到在LINQ列 [英] convert rows into columns in linq

查看:157
本文介绍了转换行到在LINQ列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下查询:

var query = from q1 in lstAgentDetails
            join q2 in lstAgentMaterialPercentage on q1.Agent_Id equals q2.AMP_Agent_Id
            into list1
            from lu in list1.DefaultIfEmpty()
            join q3 in lstMaterialType on lu.AMP_MaterialType_Id equals              q3.MaterialType_Id into list2
                        from l2 in list2.DefaultIfEmpty()
                        select new
                        {
                            q1.Agent_Name
                            lu.AMP_percentage
                            q3.Materialtype_Name
                        };   
            IList iu = query.ToList();



查询结果如下:

The query result is as follows:

agentname  material name     percentage
agent1     material1         20    
agent1     material2         10
agent2     material1         15
agent1     material3         25
agent3     material1         10
agent2     material2         30

不过,我想要的结果的格式如下:

However, I want the result in the following format:

agentname         material1         material2         material3   ...........
agent1            20                10                25          ..........
agent2            15                30                0           ..........
agent3            10                0                 0           ..........

请帮助我。

推荐答案

第二结果将为每个代理,因此它无法使用静态类型和需要使用字典的每个代理代表的代表列的动态数量。

The second result will have dynamic number of columns for each agent hence it cannot be represented using a static type and will need to represented using Dictionary for each agent.

所以,你可以做是这样的:(以后你从你的代码中的查询对象)

So, you can do something like : (after you get the query object from your code)

query.GroupBy(a => a.Agent_Name).Select(g => {
  var dict = new Dictionary<string,long>();
  foreach(var i in g)
     dict.Add(i.Materialtype_Name,i.AMP_percentage);
  return new {AgentName=g.Key, Materials = dict}
});

这篇关于转换行到在LINQ列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆