假设我有这样一个类
public class Person {
public string name;
public int age;
//...
}
假设我有一个Person数组:
Person[] personArray;
如何使用Linq获得personArray
内年龄最大的人员列表?
我正在尝试,但我希望有一个一行程序来执行此任务:
public List<Person> GetBiggestAgeList(){
var sortedPeople = personArray.OrderByDescending(person => person.age).ToList();
int maxAge = sortedPeople[0].age;
List<Person> answer = new List<Person>();
for(int i = 0; i < sortedPeople.Count; ++i){
if(sortedPeople[i].age == maxAge) answer.Add(sortedPeople[i]);
else break;
}
return answer;
}
2条答案
按热度按时间uyhoqukh1#
一个选择是
得到所有的运算放大器
一个内衬为:
6rqinv9w2#
实现此目的的几个选项:
选项1
使用链接
.Max()
documentation选项2
使用链接
.GroupBy()
+.FirstOrDefault()
documentation您可以在此处找到一个工作示例dotnet fiddle
我推荐使用
.Max()
的选项1比选项2更有效、更快,正如您在dotnet小提琴上看到的那样。要使它真正最快,请将选项1用作两个线性程序,首先解析.Max()
,然后再执行.Where(..)
。