导出 (0) 打印
全部展开
信息
您所需的主题如下所示。但此主题未包含在此库中。

Enumerable.SelectMany<TSource, TCollection, TResult> 方法 (IEnumerable<TSource>, Func<TSource, Int32, IEnumerable<TCollection>>, Func<TSource, TCollection, TResult>)

2013/12/13

将序列的每个元素投影到 IEnumerable<T>,并将结果序列合并为一个序列,并对其中每个元素调用结果选择器函数。 每个源元素的索引用于该元素的中间投影表。

Namespace:  System.Linq
程序集:  System.Core(位于 System.Core.dll 中)

public static IEnumerable<TResult> SelectMany<TSource, TCollection, TResult>(
	this IEnumerable<TSource> source,
	Func<TSource, int, IEnumerable<TCollection>> collectionSelector,
	Func<TSource, TCollection, TResult> resultSelector
)

类型参数

TSource

source 中的元素的类型。

TCollection

collectionSelector 收集的中间元素的类型。

TResult

结果序列的元素的类型。

参数

source
类型: System.Collections.Generic.IEnumerable<TSource>
一个要投影的值序列。
collectionSelector
类型: System.Func<TSource, Int32, IEnumerable<TCollection>>
一个应用于每个源元素的转换函数;函数的第二个参数表示源元素的索引。
resultSelector
类型: System.Func<TSource, TCollection, TResult>
一个应用于中间序列的每个元素的转换函数。

返回值

类型: System.Collections.Generic.IEnumerable<TResult>
一个 IEnumerable<T>,其元素是对 source 的每个元素调用一对多转换函数 collectionSelector,然后将那些序列元素中的每一个及其相应的源元素映射为结果元素的结果。

用法说明

在 Visual Basic 和 C# 中,您可以对类型为 IEnumerable<TSource> 的任何对象调用此方法作为实例方法。使用实例方法语法来调用此方法时,忽略第一个参数。

异常条件
ArgumentNullException

sourcecollectionSelectorresultSelectornull

此方法通过使用延迟执行实现。 即时返回值为一个对象,该对象存储执行操作所需的所有信息。 只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach(或 Visual Basic 中的 For Each)来枚举该对象时,才执行此方法表示的查询。

如果必须确保调用 SelectMany<TSource, TCollection, TResult>(IEnumerable<TSource>, Func<TSource, Int32, IEnumerable<TCollection>>, Func<TSource, TCollection, TResult>) 后生成的 source 的元素保持在查询逻辑范围中,SelectMany<TSource, TCollection, TResult>(IEnumerable<TSource>, Func<TSource, Int32, IEnumerable<TCollection>>, Func<TSource, TCollection, TResult>) 方法将非常有用。 有关代码示例的信息,请参见“示例”部分。 如果 TSource 类型的对象和 TCollection 类型的对象之间存在双向关系,也就是说,如果 TCollection 类型的对象提供了获取生成该属性的 TSource 对象的属性,则不需要重载 SelectMany<TSource, TCollection, TResult>(IEnumerable<TSource>, Func<TSource, Int32, IEnumerable<TCollection>>, Func<TSource, TCollection, TResult>)。 而可以使用 SelectMany<TSource, TResult>(IEnumerable<TSource>, Func<TSource, Int32, IEnumerable<TResult>>) 并通过 TCollection 对象向后定位到 TSource 对象。

Windows Phone OS

受以下版本支持: 8.0, 7.1, 7.0

Windows Phone

显示:
© 2015 Microsoft