コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【C#】GroupBy でリストをグループ化する時に複数のキーを指定する

概要

// アイテムタイプ
enum ITEM_TYPE
{
    FREE_MONEY, // 無料通貨 
    PAY_MONEY , // 有料通貨
    RECOVERY  , // 回復アイテム
    EQUIPMENT , // 装備アイテム
    OTHER     , // その他
}

// アイテム情報
class ItemData
{
    public int       m_id   ; // ID
    public ITEM_TYPE m_type ; // アイテムタイプ
    public int       m_count; // 所持数
}

// アイテム情報を管理するリスト
List<ItemData> m_itemList;

例えばこのようなアイテム情報を管理するリストが存在して
ID とアイテムタイプの2つのキーによって
アイテム情報をグループ分けしたい場合は
下記のように GroupBy で匿名型を使用することで実現可能です

var result = m_itemList
    .GroupBy( c => new { c.m_id, c.m_type } )
    .ToArray()
;