0

次の表を使用します。

+-------------+-----------+---------+
|  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次のように、指定されたandの利用可能な最大カウントを取得したいと思い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
4

4 に答える 4

1
SELECT Parent_ID, Item_ID, MAX(Count)
FROM ...
GROUP BY Parent_Id, Item_ID
于 2012-11-05T17:10:55.960 に答える
1
select parent_id, 
       item_id, 
       max(count) as count
from your_table
group by parent_id, item_id
于 2012-11-05T17:11:00.203 に答える
0

LINQ2SQL を使用すると、次のようなものが必要になると思います。

var counts = database.Items.GroupBy(p => p.parentId).Max(p => p.Key);
于 2012-11-05T17:16:03.890 に答える
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)
                    };
于 2012-11-05T17:38:57.810 に答える