यहाँ एक 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;
}
और अंत में आप से एक का चयन छोड़ सकते हैं अगर आप सिर्फ उपयोगकर्ता नाम की जरूरत है :
public static List<string> FindUsersByRole(string[] roles)
{
var userList = roles.Select(role => Roles.GetUsersInRole(role))
.Aggregate((a, b) => a.Union(b).ToArray())
.Distinct()
.ToList();
return userList;
}
यह संग्रहीत प्रो में लिखने के लिए लगभग 10 सेकंड लेता। –