繁体   English   中英

LINQ 查询嵌套列表

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM