Каков эквивалентный синтаксис запроса для следующей перегрузки GroupBy:
public static IEnumerable<IGrouping<TKey, TElement>>
GroupBy<TSource, TKey, TElement>(
this IEnumerable<TSource> source,
Func<TSource, TKey> keySelector,
Func<TSource, TElement> elementSelector
)
Этот вопрос возник при попытке написать следующий эквивалентный синтаксис запроса:
var groups =
products.SelectMany(p => p.Categories,
(p, c) => new { Product = p, Category = c })
.GroupBy(p => p.Category, p => p.Product);
«Обычный» синтаксис запроса вернет избыточную информацию: Category уже задан свойством Key:
var groups = from p in products
from c in p.Categories
let pc = new { Product = p, Category = c }
group pc by pc.Category into g
select g;
Что эквивалентно:
var groups =
products.SelectMany(p => p.Categories,
(p, c) => new { Product = p, Category = c })
.GroupBy(p => p.Category);
Эта проблема возникла при ответе на этот вопрос.





Выражение между group и by является селектором элемента. Вы изо всех сил старались Добавлять информации, которую вы специально не хотите в этом элементе. Тебе просто нужно ... не делать этого.
var groups = from product in products
from category in product.Categories
group product by category into g
select g;
о боже, я чувствую себя тупым. Спасибо