2010-05-20 10 views
0

J'utilise la classe suivantemoyenne Calculer dans chaque groupe

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;} 
} 

est Voici quelques exemples de données pour Pays et Ville

Pays

US
UK
Canada

Ville

CITYC
CityF
CITYA
CityB
CityG
CityD
citye

Je peuplant en utilisant

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 

Question 1: Je veux utiliser LINQ pour trouver avg kilomètres carrés de terrain par pays

Ex.:

Canada - 2459
UK - 3243
États-Unis - 3564

Répondre

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

Merci beaucoup tellement .. cela a fonctionné ... pouvez-vous m'aider sur ce fil aussi http://stackoverflow.com/questions/2872617/ordering-group-of-records en utilisant la syntaxe d'expression – Gokul

+0

Vous avez utilisé c.city .Meilleur ici ... que si j'utilise une requête similaire, je veux accéder à c.city.sqkm? – Gokul

0

Vous devriez être en mesure de faire quelque chose comme celui-ci (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 
} 
0

essayer

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

Cela semble fonctionner correctement dans LinqPad!

Questions connexes