转换行到在LINQ列 [英] convert rows into columns in linq
本文介绍了转换行到在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屋!
查看全文