【LINQ】Lookup<TKey, TElement> 型(1つのキーに複数の値)に変換するには(ToLookup変換演算子)

public class User
{
    public int groupId { get; set; }
    public string name { get; set; }
}

User[] users
    = {
        new User { groupId = 0, name = "Taro" },
        new User { groupId = 0, name = "Jiro" },
        new User { groupId = 1, name = "Saburo" },
        new User { groupId = 1, name = "Shiro" },
        new User { groupId = 2, name = "Goro" }
      };

// クエリ式の場合
var query = (from user in users
             select user).ToLookup<User, int>(s => s.groupId);

// ラムダ式の場合
var lambda = users.Select(s => s).ToLookup<User, int>(s => s.groupId);

IEnumerable<User> groupList;
groupList = query[0];
// 結果 ⇒ [group = 0, Value = Taro]
//      , [group = 0, Value = Jiro]

groupList = query[1];
// 結果 ⇒ [group = 1, Value = Saburo]
//      , [group = 1, Value = Shiro]

groupList = query[2];
// 結果 ⇒ [group = 2, Value = Goro]

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中