ここでLINQのバージョンだ、それだけで同様のメンバーシップ法(FindUsersByEmail
、FindUsersByName
)のようなMembershipUserCollection
を返します。それはforeachの副作用に依存しているので、それは非常にきれいではありません。
また
public static MembershipUserCollection FindUsersByRole(string[] roles)
{
MembershipUserCollection msc = new MembershipUserCollection();
roles.Select(role => Roles.GetUsersInRole(role))
.Aggregate((a, b) => a.Union(b).ToArray())
.Distinct()
.Select(user => Membership.GetUser(user))
.ToList().ForEach(user => msc.Add(user));
return msc;
}
たMembershipUserのリストが行います場合:
public static List<MembershipUser> FindUsersByRole(string[] roles)
{
var userList = roles.Select(role => Roles.GetUsersInRole(role))
.Aggregate((a, b) => a.Union(b).ToArray())
.Distinct()
.Select(user => Membership.GetUser(user))
.ToList();
return userList;
}
そして最後に、あなただけの1を選択するには、スキップすることができ、ユーザ名が必要な場合:
これは、ストアドプロシージャに書き込むのに約10秒かかっていました。 –