使用下表:
+-------------+-----------+---------+
| Parent_ID | Item_ID | Count |
+-------------+-----------+---------+
| 1 | 1 | 1 |
| 1 | 1 | 5 |
| 1 | 1 | 4 |
| 1 | 2 | 7 |
| 1 | 2 | 2 |
| 2 | 1 | 2 |
| 2 | 1 | 3 |
| 2 | 2 | 2 |
| 2 | 2 | 4 |
+-------------+-----------+---------+
我想获得给定Parent_ID
和Item_ID
的最高可用数量,如下所示:
+-------------+-----------+---------+
| Parent_ID | Item_ID | Count |
+-------------+-----------+---------+
| 1 | 1 | 5 |
| 1 | 2 | 7 |
| 2 | 1 | 3 |
| 2 | 2 | 4 |
+-------------+-----------+---------+
我如何在C#中使用LINQ / SQL来做这件事?例如,我希望父ID为1的最高项目数。这可能是这样的:
int parentId = 1;
var counts = from c in database.Items where parentId == c.parentId
//this gets all counts from items for parent id 1, but I am just looking
//for the highest count per item for parent id 1
答案 0 :(得分:1)
SELECT Parent_ID, Item_ID, MAX(Count)
FROM ...
GROUP BY Parent_Id, Item_ID
答案 1 :(得分:1)
select parent_id,
item_id,
max(count) as count
from your_table
group by parent_id, item_id
答案 2 :(得分:0)
使用LINQ2SQL我想你想要这样的东西:
var counts = database.Items.GroupBy(p => p.parentId).Max(p => p.Key);
答案 3 :(得分:0)
要按多个字段分组,您可以使用匿名对象进行分组:
var counts = from item in database.Items
group item by new { item.ParentId, item.ItemId } into itemGroup
select new Item()
{
ParentId = itemGroup.Key.ParentId,
ItemId = itemGroup.Key.ItemId,
Count = itemGroup.Max(x => x.Count)
};