6
有誰知道LINQ使用Join操作符執行什麼Join算法。LINQ是否使用嵌套循環,合併或HashSet連接加入運算符?
它是NestedLoop,Merge還是HashSet?如果支持,是否有任何方法指定不同的方法?
問候 阿爾伯特
有誰知道LINQ使用Join操作符執行什麼Join算法。LINQ是否使用嵌套循環,合併或HashSet連接加入運算符?
它是NestedLoop,Merge還是HashSet?如果支持,是否有任何方法指定不同的方法?
問候 阿爾伯特
首先,它有效地從「內部」序列創建一個查找,然後通過外序列迭代。然後它可以從外部序列中查找每個鍵併產生每個適當的對。像這樣的東西(忽略參數驗證等):
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);
}
}
}
查找將使用哈希表內的鍵,以便它有效地查找任何單個鍵。
取決於供應商。 – 2009-10-13 17:10:47
我的意思是使用Linq To Objects – aattia 2009-10-14 15:32:45