2009-11-04 40 views
0

對於參數的緣故統計信息,我有Person對象有列表中的一個對象知道該名單

public class Person 
{ 
    public int Age { get; set; } 
    public string Name { get; set; } 
} 

我需要有一個列表或者類似的東西,每個人都可以告訴我們,如果他們年紀大了或比平均年齡小。 (理想情況下,我想說的是前10%和最後10%),但我會在中位數下結算。

有沒有辦法做到這一點?

List<Person> people = new List<Person>(); 
//Fill People 
foreach(var person in people) 
{ 
    if (person.TopTenPercent) 
    { 
    Console.WriteLine(person.Name); 
    } 
} 

感謝 馬克

回答

2

真的,你應該有列表或其他封裝此信息(SRP和所有)。所以說,你有

class People : IEnumerable<Person> { 
    public double MedianAge { get; } 
    // etc. 
} 

然後你會說

foreach(var person in people.Where(p => p.Age >= people.MedianAge)) { 
    Console.WriteLine(person.Name); 
} 

對於一般情況下,你可以有一個PercentileAge方法您People類:

public double PercentileAge(double percentile) 
0

您可以使用LINQ:

  1. 計算平均(.Average() -extension法)
  2. 計算的平均年齡
  3. percentual的距離選擇指定範圍
+0

瞭解平均值並不能幫助您計算百分位數。 – jason 2009-11-04 19:48:38

0

做一個personlist,增加了本身的人,這樣的人可以查詢參考列表的內容/統計信息

相關問題