gpt4 book ai didi

.net - LINQ Join 运算符是否使用嵌套循环、合并或 HashSet 连接?

转载 作者:行者123 更新时间:2023-12-02 04:11:06 25 4
gpt4 key购买 nike

有谁知道 LINQ 使用其 Join 运算符执行什么 Join 算法。

是 NestedLoop、Merge 还是 HashSet?如果支持的话,有没有办法指定一个不同的?

问候阿尔伯特

最佳答案

首先,它有效地从“内部”序列创建查找,然后迭代外部序列。然后,它可以从外部序列中查找每个 key 并生成每个适当的对。像这样的东西(忽略参数验证等):

public static IEnumerable<TResult> Join<TOuter, TInner, TKey, TResult>
(this IEnumerable<TOuter> outer,
IEnumerable<TInner> inner,
Func<TOuter, TKey> outerKeySelector,
Func<TInner, TKey> innerKeySelector,
Func<TOuter, TInner, TResult> resultSelector)
{
Lookup<TKey, TInner> lookup = inner.ToLookup(innerKeySelector);
foreach (TOuter outerItem in outer)
{
TKey key = outerKeySelector(outerItem);
foreach (TInner innerItem in lookup[key])
{
yield return resultSelector(outerItem, innerItem);
}
}
}

查找将在内部使用哈希表作为键,以便高效地查找任何单个键。

关于.net - LINQ Join 运算符是否使用嵌套循环、合并或 HashSet 连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1561622/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com