在MembershipUserCollection上使用Linq

问题描述:

我有这段代码,它通过使用我的成员资格提供程序为我提供了所有用户的列表。在MembershipUserCollection上使用Linq

 var users = Membership.GetAllUsers(); 
     var usernames = new List<string>(); 
     foreach(MembershipUser m in users) 
      usernames.Add(m.UserName); 

我想应该有使用LINQ to做一个简单的方法,但我似乎无法使用LINQ在MembershipUserCollection

因为MembershipUserCollection只实现IEnumerable,不IEnumerable<MembershipUser>,您需要使用LINQ的扩展方法Cast然后再使用其他LINQ的扩展方法:

Membership.GetAllUsers().Cast<MembershipUser>().Select (m => m.UserName); 
+0

排序30,000条记录时,我收到了“评估超时”消息 – 2017-10-20 13:25:23

您应该能够使用LINQ,如果您第一次使用Cast<T>()方法就可以了。

像这样:

var usernames = Membership.GetAllUsers().Cast<MembershipUser>().Select(x => x.UserName).ToList(); 

我用这段代码创建成员的泛型列表:

List<Member> memberList = new List<Member>(); 
foreach (MembershipUser membershipUser in members) 
{ 
    int id = Convert.ToInt32(membershipUser.ProviderUserKey); 
    memberList.Add(new Member(id)); 
} 

一般以显式类型转换的另一种方法是使用

OfType<MembershipUser> 

所以你有

var userList = Membership.GetAllUsers().OfType<MembershipUser>().ToList();