对展平的LINQ结果集进行分组

时间:2014-09-17 15:25:52

标签: c# linq linq-to-entities grouping

我有一个查询会生成一个扁平化的结果集,但我实际上并不希望它被展平,我需要对其进行分组。

var test = (from a in _activityNoteService.GetAll()
    from l in a.ActivityNoteLines
    where l.POItemId == poItem.Id && a.ActivityTypeId == 1
    from s in l.StockCatalogueItem.StockInventoryItems
    where s.OriginalActivityNoteLineID == l.Id
    select new
    {
      sii = s.Id,
      sci = s.StockCatalogueItem,
      po = a.PurchaseOrder
    }).ToList();

sii值是我感兴趣的唯一记录,scipo值是常见的(即重复的)。如何重构此内容,以便返回一个sci,一个posii条记录列表

1 个答案:

答案 0 :(得分:1)

var test = (from a in _activityNoteService.GetAll()
    from l in a.ActivityNoteLines
    where l.POItemId == poItem.Id && a.ActivityTypeId == 1
    from s in l.StockCatalogueItem.StockInventoryItems
    where s.OriginalActivityNoteLineID == l.Id
    group s by new { sci = s.StockCatalogueItem, po = a.PurchaseOrder  } into g
    select new
    {
      ListOfSii = g.Select(s => s.Id),
      g.Key.sci,
      g.Key.po
    }).ToList();