按键分组的c#循环
我在datatable上做了一个group by语句,如下所示:按键分组的c#循环,c#,datatable,C#,Datatable,我在datatable上做了一个group by语句,如下所示: var finalResult = (from r in result.AsEnumerable() group r by new { r.Agent, r.Reason
var finalResult = (from r in result.AsEnumerable()
group r by new
{
r.Agent,
r.Reason
} into grp
select new
{
Agent = grp.Key.Agent,
Reason = grp.Key.Reason,
Count = grp.Count()
}).ToList();
agent1 reason1 4
agent1 reason2 7
agent2 reason1 8
agent2 reason2 3
..
...
...
agentn reason1 3
agentn reason2 11
最终结果将如下所示:
var finalResult = (from r in result.AsEnumerable()
group r by new
{
r.Agent,
r.Reason
} into grp
select new
{
Agent = grp.Key.Agent,
Reason = grp.Key.Reason,
Count = grp.Count()
}).ToList();
agent1 reason1 4
agent1 reason2 7
agent2 reason1 8
agent2 reason2 3
..
...
...
agentn reason1 3
agentn reason2 11
我想循环查看代理名称,以便获得每个代理的原因和每个原因的计数换句话说:我需要构建这个:
您能告诉我如何从finalResult
变量循环代理名称吗?您可能想在LINQ中尝试GroupBy:
您可以阅读更多关于它的信息您可能想在LINQ中尝试GroupBy:
您可以阅读更多信息您还需要一个GroupBy,您就完成了:
var solution =
finalResult
.GroupBy(x => x.Agent);
foreach (var group in solution)
{
// group.Key is the agent
// All items in group are a sequence of reasons and counts for this agent
foreach (var item in group)
{
// Item has <Agent, Reason, Count> and belongs to the agent from group.Key
}
}
var解决方案=
最终结果
.GroupBy(x=>x.Agent);
foreach(解决方案中的var组)
{
//组。密钥是代理
//组中的所有项目都是此代理的一系列原因和计数
foreach(组中的var项目)
{
//项具有并属于组中的代理。项
}
}
外部循环将遍历所有代理(例如Agent1、Agent2等),而内部循环将遍历当前代理的所有原因。您还需要一个GroupBy,您完成了:
var solution =
finalResult
.GroupBy(x => x.Agent);
foreach (var group in solution)
{
// group.Key is the agent
// All items in group are a sequence of reasons and counts for this agent
foreach (var item in group)
{
// Item has <Agent, Reason, Count> and belongs to the agent from group.Key
}
}
var解决方案=
最终结果
.GroupBy(x=>x.Agent);
foreach(解决方案中的var组)
{
//组。密钥是代理
//组中的所有项目都是此代理的一系列原因和计数
foreach(组中的var项目)
{
//项具有并属于组中的代理。项
}
}
外部循环将遍历所有代理(例如Agent1、Agent2等),而内部循环将遍历当前代理的所有原因。也许:
var agentGroups = finalResult
.GroupBy(x => x.Agent)
.Select(ag => new
{
Agent = ag.Key,
ReasonCounts = ag.GroupBy(x => x.Reason)
.Select(g => new
{
Agent = ag.Key,
Reason = g.Key,
Count = g.Sum(x => x.Count)
}).ToList(),
Total_Count = ag.Sum(x => x.Count)
});
foreach (var agentGroup in agentGroups)
{
string agent = agentGroup.Agent;
int totalCount = agentGroup.Total_Count;
foreach (var reasonCount in agentGroup.ReasonCounts)
{
string reason = reasonCount.Reason;
int count = reasonCount.Count;
}
}
也许:
var agentGroups = finalResult
.GroupBy(x => x.Agent)
.Select(ag => new
{
Agent = ag.Key,
ReasonCounts = ag.GroupBy(x => x.Reason)
.Select(g => new
{
Agent = ag.Key,
Reason = g.Key,
Count = g.Sum(x => x.Count)
}).ToList(),
Total_Count = ag.Sum(x => x.Count)
});
foreach (var agentGroup in agentGroups)
{
string agent = agentGroup.Agent;
int totalCount = agentGroup.Total_Count;
foreach (var reasonCount in agentGroup.ReasonCounts)
{
string reason = reasonCount.Reason;
int count = reasonCount.Count;
}
}