[英]Select and group by string occurrences using LINQ?
我有一些數據要統計和分組。 看起來像這樣:
貓貓狗狗狗
我的目標是獲取具有動物名稱及其在數據集中出現的次數的對象列表
對象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}");
注意 -
您可以在Dictionary的幫助下使用此對象而無需創建新對象:
var animalCounts = animalList.GroupBy(a => a.AnimalType).ToDictionary(
grp => grp.Key, grp => grp.ToList().Count());
foreach(var animalCount in animalCounts) {
Console.WriteLine($"Name: {animalCount.Key}{Environment.NewLine}NumberOfApperances: {animalCount.Value}");
}
按AnimalType將數據分組,然后將其轉換為AnimalObject。
var result = animalData.GroupBy(x => x.AnimalType)
.Select(g => new AnimalObject { Name = g.Key, Number = g.Count() })
.ToList();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.