从 LINQ GroupBy 访问值

6 c# linq

我有一个看起来像这样的 linq 查询:

            var myGrouping = (
                from p in context.Products
                join pt in context.ProductTypes on p.productId equals pt.productId
                select new
                {
                    ProductName = p.productName,
                    Type = pt.productType
                }).GroupBy(x => x.ProductName ).ToList();
Run Code Online (Sandbox Code Playgroud)

这为我提供了我正在寻找的内容,每个 ProductName 的组以及与它们一起显示的类型。现在,我要做的是检查每个组并查看 ProductType 是否在这些分组内有所不同,这是我有时在数据库中遇到的错误。

我已经尝试了一些方法来访问这些数据,似乎我可以item.Distinct().Skip(1).Any()用来检查这些分组并查看它们是否不同。问题只是我不知道如何访问 ProductName 和 Type 来循环遍历它。我试过这样的事情

foreach (IGrouping<string, string?> ProductGroup in myGrouping)

和沿着这些路线的东西,但它似乎永远无法访问。我的问题是,如何像这样访问 IGroupings 中的元素?

Loo*_*oki 10

使用GroupBy时可以访问:

  • 排序所依据的 Key list.Key
  • 每个组的列表 list.ToList()

所以:

foreach(var group in input.GroupBy(it => it.Sort)) 
{
    var sort = group.Key;
    var list = group.ToList();
}
Run Code Online (Sandbox Code Playgroud)