我在下面的查询,我想要做的是获取带有该quoteID的所有记录,然后按该ID分组
var CurSuppliers = db.Quotes_Items_Suppliers.Where(i => i.QuoteID == QuoteID).Select(t => t.SupplierID).GroupBy(t => t).ToList();
我知道我必须只选择1字段,因为如果有更多字段具有不同的值,LINQ将不知道如何分组。
所以我只是试图获得一些我可以循环的分组ID,当我在下面做一个foreach时我得到
strCurSupps = "System.Data.Objects.ELinq.InitializerMetadata+Grouping`2[System.Int32,System.Int32],System.Data.Objects.ELinq.InitializerMetadata+Grouping`2[System.Int32,System.Int32]"
答案 0 :(得分:2)
是的,你得到了一个群组列表。当你迭代它时,迭代的每个元素都是一个组 - 你可以也迭代。例如:
foreach (var group in currentSuppliers)
{
Console.WriteLine("Group key: {0}", group.Key);
foreach (var element in group)
{
Console.WriteLine(" Element: {0}", element);
}
}
然而,目前尚不清楚你希望实现什么是诚实的 - 你只是要获得一系列的群体,每个群体都包含一堆相同的元素,因为你只是得到了供应商ID。如果您想要整个供应商,则需要摆脱Select(t => t.SupplierID)
,而只需使用GroupBy(t => t.SupplierID)
。即使然后,您也会有一系列的组,每个组都包含多个具有相同SupplierID
和相同QuoteID
的对象,可能代表同一个实体。< / p>
答案 1 :(得分:0)
呸!
我只是缺少item.Key我使用的是item而不是item.key
谢谢你们