LINQ选择嵌套列表中的表达式

本文关键字:表达式 列表 选择 嵌套 LINQ | 更新日期: 2023-09-27 18:15:26

如何使用Linq循环遍历嵌套列表?

我有一个嵌套列表,看起来像这样:

var bookings = new List<List<Booking>>();

在Booking类中是预订的详细信息,如

我想循环遍历每个单独的列表并提取使用Linq嵌套的列表,但我正在努力做到这一点:(

我不确定我应该使用Linq的什么方法,我试过使用SelectMany,但我不认为我理解得足够好。

LINQ选择嵌套列表中的表达式

如果你想用SelectMany:

来使列表变平
bookings.SelectMany((list) => list);

如果你想提取每个单独的列表:

bookings.ForEach((list) => {
    // Do something with the nested list
});

如果您试图过滤嵌套列表,但维护这些列表:

bookings.Select((list) => list.Where((item) => item.Price > 20));

等等

SelectMany期望一个函数将列表中的每个项目转换为IEnumerable<T>,然后将IEnumerable<T> s的IEnumerable<T>平坦化为IEnumerable<T>。通过使用SelectMany和身份函数(list) => list,您实际上没有对列表中的每个项目做任何事情-它们已经是IEnumerable<T>'s,因此,不需要任何进一步的转换- SelectMany随后将使IEnumerable<T> s的结果IEnumerable<T>变平。