我想创建一个列表,其中包含多个代理以及他们调用的电话数量,并这样做:
public class Agent
{
public string Agent_ID{ get; set; }
public string Name { get; set; }
public int Calls { get; set; }
}
var list = new List<Agent>() // To create a list to hold the data
{
new Agent() { Agent_ID = "TK_J", Name = "James", Calls = 10 },
new Agent() { Agent_ID = "TK_K", Name = "Kurtis", Calls = 10 },
new Agent() { Agent_ID = "TK_R", Name = "Rebecca", Calls = 5 },
new Agent() { Agent_ID = "TK_J", Name = "James", Calls = 10 },
new Agent() { Agent_ID = "TK_R", Name = "Rebecca", Calls = 5 },
new Agents(){ Agent_ID = "TK_B", Name = "Bobby", Calls = 10 },
};
正如您所看到的,将会有多余的数据行。所以我想使用C#聚合函数如group by来汇总相似坐席的调用次数。我正在尝试的是:
list.GroupBy(i => i.Agent_ID).Select(g => new
{
Agent_ID= g.Key,
Name = */ How do i bring the name here*/,
Calls = g.Sum(i => i.Calls)});
有人可以帮助我吗?感谢任何帮助或建议。如果有问题请教我如何修复代码。非常感谢!!
最佳答案
您当前仅按 AgentID 进行分组。
您需要将所需的字段投影为匿名对象,以便它们可以作为 IGrouping<annonymous,Agent>
提供。到选择。
见下文。
list.GroupBy(i => new {i.Agent_ID, i.Name}).Select(g => new
{
Agent_ID= g.Key.Agent_ID,
Name = g.Key.Name,
Calls = g.Sum(i => i.Calls)
});
关于c# - 如何使用 C# 聚合重复记录并求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27456281/