0

这是我的代码:

var context = new InventoryContext();

var res = from i in context.Inventories
          select new FullInventory
          {
              InventoryID = i.InventoryID,
              ItemModelID = i.ItemModelID,
              ModelName = i.ItemModel.ModelName,
              ...
              Quantity = context.Inventories.Select(x => x.ItemModelID).Count()
          };

return res.ToList();

我的代码效果很好,但是结果如下所示:

   CATEGORY   | MANUFACTURER | MODEL | QUANTITY
1. Hard drive | Dell         | 250GB | 2
2. Hard drive | Dell         | 250GB | 2

如您所见,我在表中有 2 个条目,由于这些条目完全相同,我希望将它们组合在一起。要将它们分组在一起,我需要按 分组ItemModelID,但是我仍然需要将所有数据放入FullInventory类列表中。

如何将我的数据组合在一起,同时仍将数据“选择”到FullInventory类列表中?

4

3 回答 3

1

按该值分组,然后使用 . 从每个组中选择第一个项目let

var res = from inventory in context.Inventories
          group inventory by inventory.ItemModelID into model
          let i = model.FirstOrDefault()
          select [...]
于 2013-09-11T15:53:41.553 回答
1

在使用 Lambda 表达式检索完整列表后,我会尝试 Group By:

 var context = new InventoryContext();

 return (from i in context.Inventories
         select new FullInventory
         {
             InventoryID = i.InventoryID,
             ItemModelID = i.ItemModelID,
             ModelName = i.ItemModel.ModelName,
             ...
             Quantity = context.Inventories.Select(x => x.ItemModelID).Count()
         }).GroupBy(g => g.ItemModelID).ToList();
于 2013-09-11T17:17:39.353 回答
0

您可以使用Distinct()

return res.Distinct().ToList()
于 2013-09-11T15:52:52.467 回答