Использование Linq в MemberhipUserCollection
У меня есть этот код, который дает мне список всех пользователей, используя мой членский провайдер.
var users = Membership.GetAllUsers();
var usernames = new List<string>();
foreach(MembershipUser m in users)
usernames.Add(m.UserName);
Я думал, что должен быть более простой способ сделать это, используя LINQ, но я не могу использовать LINQ для MemberhipUserCollection
Ответы
Ответ 1
Поскольку MembershipUserCollection реализует только IEnumerable
, а не IEnumerable<MembershipUser>
, вам нужно использовать метод расширения Linq Cast, а затем использовать другое расширение Linq методы:
Membership.GetAllUsers ().Cast<MembershipUser> ().Select (m => m.UserName);
Ответ 2
Вы можете использовать LINQ, если сначала используете метод Cast<T>()
.
Вот так:
var usernames = Membership.GetAllUsers().Cast<MembershipUser>().Select(x => x.UserName).ToList();
Ответ 3
В общем случае альтернативой явному кастингу является использование
OfType<MembershipUser>
поэтому у вас есть
var userList = Membership.GetAllUsers().OfType<MembershipUser>().ToList();
Ответ 4
Я использовал этот фрагмент кода для создания общего списка членов:
List<Member> memberList = new List<Member>();
foreach (MembershipUser membershipUser in members)
{
int id = Convert.ToInt32(membershipUser.ProviderUserKey);
memberList.Add(new Member(id));
}