选择1个字段并按其分组(我的查询不起作用)

时间:2014-01-22 12:59:36

标签: c# linq

我在下面的查询,我想要做的是获取带有该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]"

2 个答案:

答案 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

谢谢你们