[英]LINQ query on nested list
我有一份人员名单,每个人都包含一份书籍清单。 如何编写 LINQ 查询,该查询将返回书籍数量最多的人?
public class Person
{
public string Name { get; set; }
public List<Book> Books { get; set; }
}
// Main class
List<Person> people = new List<Person>();
Person p = new Person
{
Name = "John";
Books = new List<Book> {
new Book( "Book1"),
new Book("Book2")
}
}
people.Add(p);
使用OrderByDescending
按书籍数量排序,然后取该有序枚举的第一人称:
var personWithMostBooks = people.OrderByDescending(x => x.Books.Count).FirstOrDefault();
另一种方法(在大型collections 上更快:没有额外的 memory 和排序时间)是Aggregate
:
var peopleWithMostBooks = people
.Aggregate((s, a) => s.Books.Count > a.Books.Count ? s : a);
您可以执行以下操作:
people.OrderBy(S => S.Books.Count).FirstOrDefault();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.