Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using Linq on MembershipUserCollection

I have this code which gives me a list of all the users by using my membership provider.

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

I thought there should be an easier way to do this by using LINQ, but I can't seem to use LINQ on a MembershipUserCollection

like image 926
ek_ny Avatar asked Jan 10 '12 19:01

ek_ny


3 Answers

Because MembershipUserCollection only implements IEnumerable, not IEnumerable<MembershipUser>, you need to use the Linq extension method Cast then then use other Linq extension methods:

Membership.GetAllUsers ().Cast<MembershipUser> ().Select (m => m.UserName);
like image 114
Pete Avatar answered Oct 27 '22 04:10

Pete


You should be able to use LINQ, if you use the Cast<T>() method on it first.

Like this:

var usernames = Membership.GetAllUsers().Cast<MembershipUser>().Select(x => x.UserName).ToList();
like image 44
Nuffin Avatar answered Oct 27 '22 03:10

Nuffin


Generally an alternative to explicit casting is to use

OfType<MembershipUser>

so you have

var userList = Membership.GetAllUsers().OfType<MembershipUser>().ToList();
like image 45
Kwame Avatar answered Oct 27 '22 05:10

Kwame