我有这个代码,它通过使用我的会员提供商为我提供了所有用户的列表。
var users = Membership.GetAllUsers();
var usernames = new List<string>();
foreach(MembershipUser m in users)
usernames.Add(m.UserName);
我认为应该有一种更简单的方法来使用LINQ,但我似乎无法在MembershipUserCollection上使用LINQ
答案 0 :(得分:33)
由于MembershipUserCollection仅实现IEnumerable
,而不是IEnumerable<MembershipUser>
,因此您需要使用Linq扩展方法Cast,然后使用其他Linq扩展方法:
Membership.GetAllUsers ().Cast<MembershipUser> ().Select (m => m.UserName);
答案 1 :(得分:3)
如果您首先使用Cast<T>()
方法,则应该可以使用LINQ。
像这样:
var usernames = Membership.GetAllUsers().Cast<MembershipUser>().Select(x => x.UserName).ToList();
答案 2 :(得分:2)
通常,显式转换的替代方法是使用
OfType<MembershipUser>
所以你有
var userList = Membership.GetAllUsers().OfType<MembershipUser>().ToList();
答案 3 :(得分:1)
我使用这段代码创建了一个通用的成员列表:
List<Member> memberList = new List<Member>();
foreach (MembershipUser membershipUser in members)
{
int id = Convert.ToInt32(membershipUser.ProviderUserKey);
memberList.Add(new Member(id));
}