using System;
using System.Linq;
using System.Collections.Generic;
class Customer
{
public string ID { get; set; }
public string Name { get; set; }
public string Suburb { get; set; }
public int Balance { get; set; }
public int Year { get; set; }
public Customer(string a, string b, string c, int balance, int year)
{
ID = a;
Name = b;
Suburb = c;
Balance = balance;
Year = year;
}
}
public class Test
{
public static void Main()
{
var customers = new List<Customer>();
customers.Add(new Customer("C0020", "Alfred", "Campbelltown", 1500, 2006));
customers.Add(new Customer("C0021", "Ryder", "Liverpool", 2000, 2008));
customers.Add(new Customer("C0022", "Alison", "Strathfield", 5500, 2012));
customers.Add(new Customer("C0023", "Eliza", "Liverpool", 6000, 2012));
customers.Add(new Customer("C0024", "Natsu", "Campbelltown", 2560, 2011));
var suburbGroups = customers
.GroupBy(c => c.Suburb)
.Select(g => new { Suburb = g.Key, Balance = g.Sum(c => c.Balance) })
.OrderByDescending(x => x.Balance);
foreach (var grp in suburbGroups)
Console.WriteLine("Suburb: {0} Total-Balance: {1}", grp.Suburb, grp.Balance);
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uTGlucTsKdXNpbmcgU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWM7CgpjbGFzcyBDdXN0b21lcgogICAgICAgIHsKICAgICAgICAgICAgcHVibGljIHN0cmluZyBJRCB7IGdldDsgc2V0OyB9CiAgICAgICAgICAgIHB1YmxpYyBzdHJpbmcgTmFtZSB7IGdldDsgc2V0OyB9CiAgICAgICAgICAgIHB1YmxpYyBzdHJpbmcgU3VidXJiIHsgZ2V0OyBzZXQ7IH0KICAgICAgICAgICAgcHVibGljIGludCBCYWxhbmNlIHsgZ2V0OyBzZXQ7IH0KICAgICAgICAgICAgcHVibGljIGludCBZZWFyIHsgZ2V0OyBzZXQ7IH0KCiAgICAgICAgICAgIHB1YmxpYyBDdXN0b21lcihzdHJpbmcgYSwgc3RyaW5nIGIsIHN0cmluZyBjLCBpbnQgYmFsYW5jZSwgaW50IHllYXIpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIElEID0gYTsKICAgICAgICAgICAgICAgIE5hbWUgPSBiOwogICAgICAgICAgICAgICAgU3VidXJiID0gYzsKICAgICAgICAgICAgICAgIEJhbGFuY2UgPSBiYWxhbmNlOwogICAgICAgICAgICAgICAgWWVhciA9IHllYXI7CiAgICAgICAgICAgIH0KICAgICAgICB9CgpwdWJsaWMgY2xhc3MgVGVzdAp7CglwdWJsaWMgc3RhdGljIHZvaWQgTWFpbigpCgl7CiAgICAgICAgICAgIHZhciBjdXN0b21lcnMgPSBuZXcgTGlzdDxDdXN0b21lcj4oKTsKICAgICAgICAgICAgY3VzdG9tZXJzLkFkZChuZXcgQ3VzdG9tZXIoIkMwMDIwIiwgIkFsZnJlZCIsICJDYW1wYmVsbHRvd24iLCAxNTAwLCAyMDA2KSk7CiAgICAgICAgICAgIGN1c3RvbWVycy5BZGQobmV3IEN1c3RvbWVyKCJDMDAyMSIsICJSeWRlciIsICJMaXZlcnBvb2wiLCAyMDAwLCAyMDA4KSk7CiAgICAgICAgICAgIGN1c3RvbWVycy5BZGQobmV3IEN1c3RvbWVyKCJDMDAyMiIsICJBbGlzb24iLCAiU3RyYXRoZmllbGQiLCA1NTAwLCAyMDEyKSk7CiAgICAgICAgICAgIGN1c3RvbWVycy5BZGQobmV3IEN1c3RvbWVyKCJDMDAyMyIsICJFbGl6YSIsICJMaXZlcnBvb2wiLCA2MDAwLCAyMDEyKSk7CiAgICAgICAgICAgIGN1c3RvbWVycy5BZGQobmV3IEN1c3RvbWVyKCJDMDAyNCIsICJOYXRzdSIsICJDYW1wYmVsbHRvd24iLCAyNTYwLCAyMDExKSk7CgogICAgICAgICAgICB2YXIgc3VidXJiR3JvdXBzID0gY3VzdG9tZXJzCiAgICAgICAgICAgICAgICAuR3JvdXBCeShjID0+IGMuU3VidXJiKQogICAgICAgICAgICAgICAgLlNlbGVjdChnID0+IG5ldyB7IFN1YnVyYiA9IGcuS2V5LCBCYWxhbmNlID0gZy5TdW0oYyA9PiBjLkJhbGFuY2UpIH0pCiAJCS5PcmRlckJ5RGVzY2VuZGluZyh4ID0+IHguQmFsYW5jZSk7CgogICAgICAgICAgICBmb3JlYWNoICh2YXIgZ3JwIGluIHN1YnVyYkdyb3VwcykKICAgICAgICAgICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKCJTdWJ1cmI6IHswfSAgVG90YWwtQmFsYW5jZTogezF9IiwgZ3JwLlN1YnVyYiwgZ3JwLkJhbGFuY2UpOwoJfQp9