在列表中<object>查找特定属性值的频率



如何找到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);
}

最新更新