为了论证,我有人物对象
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);
}
}
由于 标记
答案 0 :(得分: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)
答案 1 :(得分:0)
您可以使用Linq:
.Average()
- 扩展方法)答案 2 :(得分:0)
制作个人名单,将其自身添加为对此人的引用,以便此人可以查询列表的内容/统计信息