将行转换为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(); 

查询结果如下:

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

但是,我希望结果采用以下格式:

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

请帮帮我。

第二个结果将为每个代理程序提供动态列数,因此无法使用静态类型表示,并且需要使用Dictionary为每个代理程序表示。

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

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