【发布时间】:2020-03-16 17:42:22
【问题描述】:
我正在尝试获取列中相同值的每个项目的计数。例如,我有一个包含人员信息的表,我希望它通过名字列并让我计算其中有多少 Joe's 和 Mary's,而无需指定特定名称。
【问题讨论】:
-
这能回答你的问题吗? how to use group by in a linq query?
-
到目前为止你尝试了什么?
我正在尝试获取列中相同值的每个项目的计数。例如,我有一个包含人员信息的表,我希望它通过名字列并让我计算其中有多少 Joe's 和 Mary's,而无需指定特定名称。
【问题讨论】:
您可以按列对数据进行分组
users.GroupBy(x => x.FirstName).Select(x => new
{
FirstName = x.Key,
Count = x.Count()
});
【讨论】:
尝试使用GroupBy:
public class People
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
static void Main(string[] args)
{
var peoples = new List<People>
{
new People { Id = 1, FirstName = "Bob", LastName = "Abc" },
new People { Id = 2, FirstName = "Joe's", LastName = "Def" },
new People { Id = 3, FirstName = "Mary's", LastName = "Ghi" },
new People { Id = 4, FirstName = "Alice", LastName = "Jikl" },
new People { Id = 5, FirstName = "Bob", LastName = "Mno" },
};
var groupedByFirstName = peoples
.GroupBy(x => x.FirstName)
.Select(x => new
{
FirstName = x.Key,
Count = x.Count()
});
foreach (var people in groupedByFirstName)
{
Console.WriteLine($"FirstName: {people.FirstName}. Count: {people.Count}");
}
Console.ReadKey();
}
}
【讨论】: