在MembershipUserCollection上使用Linq

时间:2012-01-10 19:27:34

标签: c# linq membership-provider

我有这个代码,它通过使用我的会员提供商为我提供了所有用户的列表。

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

我认为应该有一种更简单的方法来使用LINQ,但我似乎无法在MembershipUserCollection上使用LINQ

4 个答案:

答案 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));
}