Using Linq on MembershipUserCollection
本文关键字:MembershipUserCollection on Linq Using | 更新日期: 2023-09-27 18:19:52
我有这样的代码,它通过使用我的成员资格提供程序为我提供了所有用户的列表。
var users = Membership.GetAllUsers();
var usernames = new List<string>();
foreach(MembershipUser m in users)
usernames.Add(m.UserName);
我认为应该有一种更简单的方法通过使用LINQ来实现这一点,但我似乎无法在MembershipUserCollection 上使用LINQ
由于MembershipUserCollection只实现IEnumerable
,而不实现IEnumerable<MembershipUser>
,因此需要使用Linq扩展方法Cast,然后使用其他Linq扩展方式:
Membership.GetAllUsers ().Cast<MembershipUser> ().Select (m => m.UserName);
如果您首先在LINQ上使用Cast<T>()
方法,那么您应该能够使用LINQ。
像这样:
var usernames = Membership.GetAllUsers().Cast<MembershipUser>().Select(x => x.UserName).ToList();
通常,显式强制转换的替代方法是使用
OfType<MembershipUser>
所以你有
var userList = Membership.GetAllUsers().OfType<MembershipUser>().ToList();
我使用这段代码创建了一个成员的通用列表:
List<Member> memberList = new List<Member>();
foreach (MembershipUser membershipUser in members)
{
int id = Convert.ToInt32(membershipUser.ProviderUserKey);
memberList.Add(new Member(id));
}