.NET Framework SelectMany(平面图)
示例
Enumerable.Select为每个输入元素返回一个输出元素。而 Enumerable.SelectMany为每个输入元素生成可变数量的输出元素。这意味着输出序列可能包含比输入序列更多或更少的元素。
Lambdaexpressions传递给Enumerable.Select必须返回一个项目。传递给的Lambda表达式Enumerable.SelectMany必须产生一个子序列。对于输入序列中的每个元素,此子序列可能包含不同数量的元素。
例
class Invoice
{
public int Id { get; set; }
}
class Customer
{
public Invoice[] Invoices {get;set;}
}
var customers = new[] {
new Customer {
Invoices = new[] {
new Invoice {Id=1},
new Invoice {Id=2},
}
},
new Customer {
Invoices = new[] {
new Invoice {Id=3},
new Invoice {Id=4},
}
},
new Customer {
Invoices = new[] {
new Invoice {Id=5},
new Invoice {Id=6},
}
}
};
var allInvoicesFromAllCustomers = customers.SelectMany(c => c.Invoices);
Console.WriteLine(
string.Join(",", allInvoicesFromAllCustomers.Select(i => i.Id).ToArray()));输出:
1,2,3,4,5,6
观看演示
Enumerable.SelectMany使用两个连续from子句的基于语法的查询也可以实现:
var allInvoicesFromAllCustomers
= from customer in customers
from invoice in customer.Invoices
select invoice;
热门推荐
10 周日徒步祝福语大全简短
11 长辈生日祝福语简短女性
12 写给老师祝福语简短大学
13 女神节日简短祝福语大全
14 顾客简短祝福语大全集
15 同事男生节祝福语简短
16 虎年新年专属祝福语简短
17 50多岁生日简短祝福语
18 简短大气的狗年祝福语