using System;
using System.Linq;
abstract class Customer
{
public int id;
public string name;
public double balance;
}
class NormalCustomer: Customer
{
}
class SubscriberCustomer:Customer
{
public int LandMinutes;
public int MobileMinutes;
}
public class Test
{
public static void Main()
{
Customer[] customers = new Customer[5];
customers[0]=new NormalCustomer();
customers[1] = new NormalCustomer();
customers[2] = new SubscriberCustomer();
customers[3] = new NormalCustomer();
customers[4] = new SubscriberCustomer();
var groupedCustomers = customers.GroupBy(c => c.GetType()).ToList();
foreach(var type in groupedCustomers)
{
Console.WriteLine(type.Key.Name + ", count: " + type.Count());
}
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uTGlucTsKCmFic3RyYWN0IGNsYXNzIEN1c3RvbWVyCiAgICB7CiAgICAgICAgcHVibGljIGludCBpZDsKICAgICAgICBwdWJsaWMgc3RyaW5nIG5hbWU7CiAgICAgICAgcHVibGljIGRvdWJsZSBiYWxhbmNlOwogICAgfQoKICAgIGNsYXNzIE5vcm1hbEN1c3RvbWVyOiBDdXN0b21lcgogICAgewogICAgfQoKICAgIGNsYXNzIFN1YnNjcmliZXJDdXN0b21lcjpDdXN0b21lcgogICAgewogICAgICAgcHVibGljIGludCBMYW5kTWludXRlczsKICAgICAgIHB1YmxpYyBpbnQgTW9iaWxlTWludXRlczsKICAgIH0KCnB1YmxpYyBjbGFzcyBUZXN0CnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBNYWluKCkKCXsKCSAgICBDdXN0b21lcltdIGN1c3RvbWVycyA9IG5ldyBDdXN0b21lcls1XTsKICAgICAgICBjdXN0b21lcnNbMF09bmV3IE5vcm1hbEN1c3RvbWVyKCk7CiAgICAgICAgY3VzdG9tZXJzWzFdID0gbmV3IE5vcm1hbEN1c3RvbWVyKCk7CiAgICAgICAgY3VzdG9tZXJzWzJdID0gbmV3IFN1YnNjcmliZXJDdXN0b21lcigpOwogICAgICAgIGN1c3RvbWVyc1szXSA9IG5ldyBOb3JtYWxDdXN0b21lcigpOwogICAgICAgIGN1c3RvbWVyc1s0XSA9IG5ldyBTdWJzY3JpYmVyQ3VzdG9tZXIoKTsgCgkJCgkJdmFyIGdyb3VwZWRDdXN0b21lcnMgPSBjdXN0b21lcnMuR3JvdXBCeShjID0+IGMuR2V0VHlwZSgpKS5Ub0xpc3QoKTsKICAgICAgICAKICAgICAgICBmb3JlYWNoKHZhciB0eXBlIGluIGdyb3VwZWRDdXN0b21lcnMpCiAgICAgICAgewogICAgICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKHR5cGUuS2V5Lk5hbWUgKyAiLCBjb3VudDogIiArIHR5cGUuQ291bnQoKSk7CiAgICAgICAgfQoJfQp9