2012-01-10 19 views
15

Tôi có mã này cung cấp cho tôi danh sách tất cả người dùng bằng cách sử dụng nhà cung cấp tư cách thành viên của tôi.Sử dụng LINQ trên MembershipUserCollection

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

tôi nghĩ cần phải có một cách dễ dàng hơn để làm điều này bằng cách sử dụng LINQ, nhưng tôi dường như không thể sử dụng LINQ trên MembershipUserCollection

Trả lời

31

Vì MembershipUserCollection chỉ thực hiện IEnumerable, không IEnumerable<MembershipUser>, bạn cần phải sử dụng phương pháp mở rộng LINQ Cast rồi sau đó sử dụng phương pháp khuyến nông LINQ khác:

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

Tôi nhận được thông báo "Thời gian đánh giá" khi sắp xếp 30.000 bản ghi –

3

bạn sẽ có thể sử dụng LINQ, nếu bạn sử dụng phương pháp Cast<T>() vào nó đầu tiên.

Như thế này:

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

tôi đã sử dụng đoạn mã này để tạo ra một danh sách chung của Thành viên:

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

chung một thay thế cho đúc rõ ràng là sử dụng

OfType<MembershipUser> 

để bạn có

var userList = Membership.GetAllUsers().OfType<MembershipUser>().ToList(); 
Các vấn đề liên quan