2012-01-10 4 views
15

メンバーシッププロバイダを使用してすべてのユーザーのリストを取得できます。MembershipUserCollectionでLinqを使用する

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

必要に、ないIEnumerable<MembershipUser>、私はLINQを使用してこれを行うための簡単な方法があるはずと思ったが、私はMembershipUserCollectionだけIEnumerableを実装しているためMembershipUserCollection

答えて

31

にLINQを使用するように見えることはできません他のLINQの拡張メソッドを使用し、その後、その後LINQの拡張メソッドCastを使用します。

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

30,000レコードをソートするときに「評価タイムアウト」というメッセージが表示されました –

3

は、あなたが最初にそれにCast<T>()メソッドを使用する場合は、LINQを使用することができるはずです。

このよう

:私はメンバーの一般的なリストを作成するには、コードのこの部分を使用し

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

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

一般的に明示的にキャストする代わりに、

OfType<MembershipUser> 
を使用することです

ありがとうございます

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