这是我的代码:
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
类列表的同时将数据分组在一起?
答案 0 :(得分:1)
按该值分组,然后使用let
选择每个组中的第一个项目。
var res = from inventory in context.Inventories
group inventory by inventory.ItemModelID into model
let i = model.FirstOrDefault()
select [...]
答案 1 :(得分: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();
答案 2 :(得分:0)
您可以使用Distinct()
return res.Distinct().ToList()