2010-10-13 62 views
2

我有 IEnumerable<A>IEnumerable<B> 我想基於A.Test(B)是否返回true來進行組連接。Linq Group使用Func <Inner,Outer,bool>加入?

keyselector funcs似乎不這樣做,因爲KeySelectors需要返回相同類型的鍵,以便可以檢查它們是否相等。

有什麼我在這裏失蹤?

回答

1

你說得對,GroupJoin不能真正處理這種情況。 此解決方法可以解決嗎?

var res = from aInstance in aSequence 
      select new { 
         A = aInstance, 
         MatchingBs = bSequence.Where(bInstance => aInstance.Test(bInstance)) 
        }; 
+1

是的,它會的。爲了所有的實際目的,它會這樣做。通常我不會再看一眼。閱讀「真實世界的功能編程」後,我只是有點謹慎。當謂詞和結果選擇器混合在一起時,該死的書不會讓我放心。我不相信我實際上在C#中使用curry func(predicate-> resultselector)來可視化,以便調整我發現的新功能敏感性。雖然不是很重要。如果有的話,它自然會成爲我自己的GroupJoin超負荷。感謝您的迴應。 – Tormod 2010-10-13 15:18:10

+0

@Tormod:純粹主義者,我明白了! – Ani 2010-10-13 20:58:15

+0

崇拜者純粹主義者:) – Tormod 2010-10-14 06:11:30