gpt4 book ai didi

c# - 使用 LINQ 按字符串出现选择和分组?

转载 作者:太空宇宙 更新时间:2023-11-03 19:44:59 25 4
gpt4 key购买 nike

我有一些数据,我想对其进行计数和分组。它看起来像这样:

猫猫狗狗狗

我的目标是获得一个对象列表,其中包含动物的名称及其在数据集中出现的次数

对象 1

姓名:猫

出现次数:2

对象 2

名字:狗

出现次数:3

我正在尝试使用 LINQ 查询来执行此操作,这就是我所拥有的,但计数是错误的。我认为它是在计算长度而不是它出现的次数。我将如何修改它?

animalData.Select(x => x.AnimalType).Distinct().ToList().ForEach(a => 

AnimalObject animal = new AnimalObject();

animal.Name = a.Name;

animal.Number = a.Distinct().Count();

animalList.Add(animal);

});

最佳答案

这就是您完成任务所需的全部:

var result = animalData.GroupBy(x => x.AnimalType).Select(g => new AnimalObject 
{
Name = g.Key,
Number = g.Count()
}).ToList();

foreach (var e in result)
Console.WriteLine($"Name: {e.Name} \n NumberAppearances: {e.Number}");

注意 -

  1. 由于您的 LINQ 查询当前已编写,因此您无需调用 distinctToList,因为前者会产生在不正确的结果中,后者是不必要的。
  2. 遵循良好的命名约定,您不需要在类型名称后加上 Object 后缀,因此只需 Animal 就足够了。

关于c# - 使用 LINQ 按字符串出现选择和分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46920411/

25 4 0
文章推荐: html - 如何在不弄乱边框的情况下将
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com