如何找到List<Person>
的Age
属性的频率?
var people = new List<Person>
{
new Person {Name = "Jonh", Age = 10},
new Person {Name = "Jack", Age = 12},
new Person {Name = "Sara", Age = 10},
new Person {Name = "Dave", Age = 10},
new Person {Name = "Jude", Age = 12}
};
class Person
{
public string Name { get; set; }
public int Age { get; set; }
public int Frequency { get; set; }
}
所以我希望我的Person
对象被更新为具有Frequency
值。
Name Age Frequency
----------------------------------------------
Jonh 10 3
Jack 12 2
Sara 10 3
Dave 10 3
Jude 12 2
var countByAge = people.GroupBy(x => x.Age)
.ToDictionary(g => g.Key, g => g.Count());
foreach(var person in people)
{
person.Frequency = countByAge[person.Age];
}
试试:
foreach(var item in people)
{
item.Frequency = people.Count(x=>x.Age == item.Age);
}