var qry = addresses.GroupBy(addr => new { addr.city, addr.state, addr.country});
then you can do (for example):
foreach(var row in qry) {
Console.WriteLine("{0} {1} {2} \t {3}",
row.Key.city, row.Key.state, row.Key.country, row.Count());
}
. .Key new { addr.city, addr.state, addr.country}, IEnumerable<Address>. , , :
var qry = from addr in db.Addresses
group addr by new { addr.city, addr.state, addr.country} into grp
select new {
grp.Key.city, grp.Key.state,
grp.Key.country, Count = grp.Count()
};
( n + 1).