c# - 如何使用 C# 聚合重复记录并求和

标签 c# linq aggregation

我想创建一个列表,其中包含多个代理以及他们调用的电话数量,并这样做:

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/

相关文章:

java - Brief : Some game objects move, 有些没有

c# - 新的 ReSharper Equals() 和 GetHashCode() 代码生成方法

c# - 异常 : Cannot find the assembly Mynamespace , 版本=0.0.0.0,文化=中性,PublicKeyToken=null

c# - 对列表进行分组 - 寻找更好的方法

c# - 如何使用 Linq 查询和 IEnumerable 获取类属性的值

r - 聚合 R 中多列的唯一值

pandas - 如何指示 Pandas、Python 中分类列中值的计数?

c# - 带有两个二维数组的锯齿状数组

c# - HttpResponse.End 与 HttpResponse.Close 与 HttpResponse.SuppressContent

c# - LINQ GroupBy 返回列表作为结果