LINQ选择嵌套列表中的表达式
本文关键字:表达式 列表 选择 嵌套 LINQ | 更新日期: 2023-09-27 18:15:26
如何使用Linq循环遍历嵌套列表?
我有一个嵌套列表,看起来像这样:
var bookings = new List<List<Booking>>();
在Booking类中是预订的详细信息,如
我想循环遍历每个单独的列表并提取使用Linq嵌套的列表,但我正在努力做到这一点:(
我不确定我应该使用Linq的什么方法,我试过使用SelectMany,但我不认为我理解得足够好。
如果你想用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>
变平。