0

ユーザーのリストとグループ名をlist: User{name, groupname}取得する関数があります。AddGroupMemberstipグループ名に基づいてユーザーを分割し、これをこの関数にフィードする必要があります。

例:理想的にはやりたい

var groups = users.<SOME LINQ FUNCTION>(u => u.groupname);

foreach(var group in groups)
{
   AddGroupMembership(users.value, users.key);
}

どこusers.valueで aIEnumerable<User>およびusers.keyは、(そのサブグループに対して) すべてが共有するグループ名になります。

誰かが何かを提案してください。

4

2 に答える 2

2

あなたが探しているGroupBy

foreach (var g in users.GroupBy(u => u.groupname))
{
    AddGroupMembership(g, g.Key);
}

各グループgはそれ自体がであるため、最初のパラメーターをに渡すときにプロパティにアクセスするIEnumerable<User>ことはできません。.valueAddGroupMembership

于 2012-07-11T10:01:13.303 に答える
0

あなたはおそらくこのようなことをすることができます:

var grouped = from user in users
              group user by user.groupname into groupedUsers
              select new {
                  users = groupedUsers,
                  groupName = groupedUsers.FirstOrDefault().groupName
              };

これにより、ユーザーのグループのリストが表示され、それを繰り返すことができます。

foreach (var group in grouped) {
    AddGroupMembership(group.users, group.groupName);
}

Jonsの回答よりも少し冗長で、構文が正しいかどうかは100%わかりませんが、基本的な考え方は同じです。

于 2012-07-11T10:03:19.487 に答える