Windows 应用
此文章由机器翻译。 将光标移到文章的句子上,以查看原文。 更多信息。
译文
原文
信息
您所需的主题如下所示。但此主题未包含在此库中。

Enumerable.GroupJoin<TOuter, TInner, TKey, TResult> 方法 (IEnumerable<TOuter>, IEnumerable<TInner>, Func<TOuter, TKey>, Func<TInner, TKey>, Func<TOuter, IEnumerable<TInner>, TResult>, IEqualityComparer<TKey>)

 

基于键相等对两个序列的元素进行关联并对结果进行分组。使用指定的 IEqualityComparer<T> 对键进行比较。

命名空间:   System.Linq
程序集:  System.Core(System.Core.dll 中)

public static IEnumerable<TResult> GroupJoin<TOuter, TInner, TKey, TResult>(
	this IEnumerable<TOuter> outer,
	IEnumerable<TInner> inner,
	Func<TOuter, TKey> outerKeySelector,
	Func<TInner, TKey> innerKeySelector,
	Func<TOuter, IEnumerable<TInner>, TResult> resultSelector,
	IEqualityComparer<TKey> comparer
)

参数

outer

要联接的第一个序列。

inner

要与第一个序列联接的序列。

outerKeySelector

用于从第一个序列的每个元素提取联接键的函数。

innerKeySelector

用于从第二个序列的每个元素提取联接键的函数。

resultSelector

用于从第一个序列的元素和第二个序列的匹配元素集合中创建结果元素的函数。

comparer

一个 IEqualityComparer<T>,用于对键进行哈希处理和比较。

返回值

Type: System.Collections.Generic.IEnumerable<TResult>

一个包含 TResult 类型的元素的 IEnumerable<T>,这些元素可通过对两个序列执行分组联接获取。

类型参数

TOuter

第一个序列中的元素的类型。

TInner

第二个序列中的元素的类型。

TKey

键选择器函数返回的键的类型。

TResult

结果元素的类型。

Exception Condition
ArgumentNullException

outerinnerouterKeySelectorinnerKeySelectorresultSelectornull

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

如果 omparernull,则使用默认的相等比较器 Default 对键进行哈希处理和比较。

GroupJoin<TOuter, TInner, TKey, TResult> 产生分层结果,这表示 outer 中的元素与 inner 中的匹配元素的集合成对出现。 GroupJoin 允许您以 outer 的每个元素的整个匹配集为基础生成结果。

System_CAPS_note注意

如果 inner 中没有 outer 的给定元素的关联元素,则该元素匹配的序列将为空,但仍将出现在结果中。

对每个 outer 元素以及与 outer 元素匹配的所有 inner 元素的集合仅调用一次 resultSelector 函数。这与 Join<TOuter, TInner, TKey, TResult> 方法不同,该方法可在包含 outer 的一个元素和 inner 的一个元素的对中调用结果选择器函数。

GroupJoin 保留 outer 中的元素的顺序,并且对于 outer 的每个元素,则保留 inner 的匹配元素的顺序。

GroupJoin<TOuter, TInner, TKey, TResult> 在传统的关系数据库术语中没有直接的等效方法。但是,此方法可实现内部联接和左外部联接的超集。这两种操作均可根据已分组的联接进行写入。请参见Join Operations

Universal Windows Platform
4.5 后可用
.NET Framework
3.5 后可用
Portable Class Library
受以下版本支持:portable .NET platforms
Silverlight
2.0 后可用
Windows Phone Silverlight
7.0 后可用
Windows Phone
8.1 后可用
返回页首
显示:
© 2016 Microsoft