计算每组的平均值

时间:2010-05-20 10:59:51

标签: c# linq

我正在使用以下课程

class Country
{
   int CountryID {get; set;}
   List<City> city {get; set;}
}

class City
{
   int CountryID {get; set; }
   string city {get; set;}  
   int sqkm {get; set;}
}

以下是国家和城市的一些示例数据

国家

US
英国
加拿大

城市

CityC
CityF
CityA
CityB
CityG
CityD
CityE

我正在使用

填充
List<Country> countries = new List<Country> { new Country() { CountryID = "US", city = new List<City> { new City() {CountryID = "US", City  ="CityF", sqkm = 2803 }, and so on

问题1:我想使用LINQ来查找每个国家/地区的平均每公里土地数

例如:

加拿大 - 2459
英国 - 3243
美国 - 3564

3 个答案:

答案 0 :(得分:0)

你应该可以做这样的事情(using System.Linq;):

foreach( Country c in countries)
{
  int average = c.city.Sum( city => city.sqkm)/c.city.Count();
  // display it, or save it, or something
}

答案 1 :(得分:0)

var countryAvgs = countries
    .Select(c => new { Id = c.CountryId, Area = c.city.Average(ct => (double)ct.sqkm)});

答案 2 :(得分:0)

countries.Sum(x => x.city.Sum(y => y.sqkm)) / countries.Sum(x => x.city.Count())

似乎在LinqPad中正常工作!