C# 等效linq查询语法

C# 等效linq查询语法,c#,linq,C#,Linq,以下重载的GroupBy的等效查询语法是什么: public static IEnumerable<IGrouping<TKey, TElement>> GroupBy<TSource, TKey, TElement>( this IEnumerable<TSource> source, Func<TSource, TKey> keySelector, Func<TSource, TEl

以下重载的
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 = 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);

这个问题在回答时突然出现。

组和组之间的表达式是元素选择器。您特意将您特别不想要的信息添加到该元素中。你只需要…不要那样做

var groups = from product in products
             from category in product.Categories
             group product by category into g
             select g;

哦,天哪,我觉得自己很笨。谢谢
var groups = from product in products
             from category in product.Categories
             group product by category into g
             select g;