Grouped.Key ссылается на поля, которые вы указали в сгруппированном по x предложении.В результате в вашем запросе Key = I.ItemID.
В вашем примере вместо того, чтобы думать с точки зрения SQL, где вам нужно сгладить иерархии, используйте OO-сущность LINQ и графов объектов.Немного адаптировав свой пример и настроив LINQPad на использование операторов C #, я думаю, вы получите больше того, что ищете.Примечание. Метод расширения Dump () специфичен для LINQPad для вывода результатов и показывает итоговую иерархию.
var bids = new [] { new { ItemID = 1, BidValue = 30 } , new {ItemID=1, BidValue=45}};
var items = new [] { new { ItemID = 1, ItemName = "x" }, new {ItemID = 2, ItemName="y"} };
var query = from i in items
select new
{
i.ItemID,
i.ItemName,
Bids = from b in bids
where b.ItemID == i.ItemID
select b
};
query.Dump();
При этом ваши категории указывают на LINQ to SQL.Если ваша модель в LINQ to SQL или EF, вы можете сделать это еще проще, используя сопоставленные ассоциации:
var query = from i in dc.Items
select new
{
i.ItemID,
i.ItemName,
i.Bids
};
query.Dump();