2010-10-13 31 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