Вы можете выполнить группировку linq по массиву
var peeps = from person in people
group person by person.name into bucket
select new { name = bucket.Key, count = bucket.Count() };
. Это создаст перечисляемый анонимный тип со свойствами name и count, которые вы можете перебирать, чтобы получить имя и количество имен, например:
class Guy
{
public int age; public string name;
public Guy( int age, string name ) {
this.age = age;
this.name = name;
}
}
class Program
{
static void Main( string[] args ) {
var GuyArray = new Guy[] {
new Guy(22,"John"),new Guy(25,"John"),new Guy(27,"John"),new Guy(29,"John"),new Guy(12,"Jack"),new Guy(32,"Jack"),new Guy(52,"Jack"),new Guy(100,"Abe")};
var peeps = from f in GuyArray group f by f.name into g select new { name = g.Key, count = g.Count() };
foreach ( var record in peeps ) {
Console.WriteLine( record.name + " : " + record.count );
}
}
}
Издаст:
John : 4
Jack : 3
Abe : 1