我有一个看起来像这样的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();
这给了我我想要的东西,每个ProductName的一个组,其中显示了类型。现在,我要做的是检查每个组,看看这些分组中的ProductType是否有所不同,这是我有时会在数据库中得到的错误。
我已经尝试了一些方法来访问这些数据,似乎我可以使用item.Distinct().Skip(1).Any()
检查这些分组,看看它们是否有所不同。问题只是我不知道如何访问ProductName和Type,以便循环它。我尝试过像
foreach (IGrouping<string, string?> ProductGroup in myGrouping)
以及沿着这些方向的事情,但它似乎永远不可访问。我的问题是,如何访问IGroupings中的元素?
答案 0 :(得分:3)
使用GroupBy
时,您可以访问:
list.Key
list.ToList()
所以:
foreach(var group in input.GroupBy(it => it.Sort))
{
var sort = group.Key;
var list = group.ToList();
}
答案 1 :(得分:0)
像这样使用
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 => new{x.ProductName,x.Type } ).Select(x=>new {ProductName =x.Key.ProductName ,Type=x.Key.Type}).ToList();