假设我有这个课程:
class Person {
public int ID;
public string Name;
}
Run Code Online (Sandbox Code Playgroud)
然后我有一份人员名单.
List<Person> persons = new List<Person>();
Run Code Online (Sandbox Code Playgroud)
其中充斥着很多随机的人.如何查询列表以获取ID最低的人?列表中的对象是随机顺序,因此ID最低的人可能不是第一个元素.我可以在不先排序列表的情况下实现此目的吗
这是没有排序列表,只是迭代列表一次.
Person minIdPerson = persons[0];
foreach (var person in persons)
{
if (person.ID < minIdPerson.ID)
minIdPerson = person;
}
Run Code Online (Sandbox Code Playgroud)
您可以使用MinByMore Linq库中的方法:
var person = persons.MinBy(x => x.ID);
Run Code Online (Sandbox Code Playgroud)
如果您不能使用第三方库,则可以先获取最小ID,然后再获取具有最小ID的人:
var minID = person.Min(x => x.ID);
var person = persons.First(x => x.ID == minID);
Run Code Online (Sandbox Code Playgroud)
使用LINQ的Min扩展方法:
persons.Min(p => p.ID)
Run Code Online (Sandbox Code Playgroud)
编辑:
遗憾的是,前面的方法仅返回最低的 ID,因此如果您只想使用内置 LINQ 方法,请执行以下操作:
persons.Aggregate(
(personWithMinID, currentPerson) =>
currentPerson.ID <= personWithMinID.ID ? currentPerson : personWithMinID)
Run Code Online (Sandbox Code Playgroud)