.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;
热门推荐
1 训练狗狗憋尿
2 狗狗追踪训练
3 狗狗训练要多少钱
5 深圳狗狗训练
6 训练狗狗唤回
7 狗狗叫怎么训练
8 狗狗训练班
10 狗狗社会化训练
11 狗狗叫回训练
12 广州狗狗训练学校
13 狗狗训练躺下
14 狗狗随行训练
15 训练狗狗巡回
16 狗狗要怎么训练
17 狗狗喂食训练
18 训练狗狗躺下