2010-10-13 2 views
2

У меня есть IEnumerable<A> и IEnumerable<B> Я хочу присоединиться к группе, если A.Test(B) возвращает true.Linq GroupJoin с Func <Внутренний, Outer, bool>?

Функции keyselector, похоже, не делают этого, поскольку KeySelectors должны возвращать ключи того же типа, чтобы их можно было проверить на равенство.

Есть ли что-то, что мне не хватает здесь?

ответ

1

Вы правы, GroupJoin не может справиться с этим случаем. Будет ли это обходным путем?

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

Да, это будет. Для всех практических целей это будет сделано. Обычно я бы не стал на это смотреть. Я просто немного настороженно прочитал «Функциональное программирование для реального мира». Проклятая книга не позволяет мне быть спокойным, когда предикат и результат-выборник смешиваются. Я не могу поверить, что на самом деле я нахожу визуализацию функции currying (predicate-> resultselector) в C#, чтобы погладить мои новообретенные функциональные чувствительности. Не серьезно. Во всяком случае, это будет моя собственная перегрузка GroupJoin, естественно. Спасибо, что ответили. – Tormod

+0

@ Тормод: Пурист, я вижу! – Ani

+0

Wannabe purist :) – Tormod

Смежные вопросы