2010-10-22 28 views
1

我想这是微不足道的,但不适合我。我的收藏MembershipUserCollection。我想对它执行一些Linq查询,所以我使用OfType<MembershipUser>()方法,然后在其上应用Where()。但是,我不知道如何将我的结果投回到MembershipUserCollection将LinQ结果强制类型化集合的问题

这是我的代码:

MembershipUserCollection Users; 
Users = GetAllUsers(pageIndex, pageSize, out totalRecords).OfType<MembershipUser>().Where(user => user.Email == emailToMatch); //how to cast it back to MembershipUserCollection ? 

GetAllUsers(pageIndex, pageSize, out totalRecords)正在恢复MembershipUserCollection

感谢您的时间。

回答

0

一个可能的解决方案:

var users = GetAllUsers(pageIndex, pageSize, out totalRecords) 
     .OfType<MembershipUser>() 
     .Where(user => user.Email == emailToMatch); 

    MembershipUserCollection membershipUsers = new MembershipUserCollection(); 
    users 
     .ToList() 
     .ForEach(membershipUsers.Add); 

另外一个与foreach语句:

foreach (var user in users) 
{ 
    membershipUsers.Add(user); 
} 
1

我不认为你可以在查询本身做,但你应该能够做到这一点:

var query = GetAllUsers(pageIndex, pageSize, out totalRecords) 
       .OfType<MembershipUser>() 
       .Where(user => user.Email == emailToMatch); 

var users = new MembershipUserCollection(); 
foreach (var user in query) 
{ 
    users.Add(user); 
} 

(当然,你可以换这个逻辑成一个扩展方法如果你想,然后调用查询扩展方法)

+0

谢谢,编译器说有一个表达式。 – Wodzu 2010-10-22 10:13:30

0

所以这是微不足道的,我不得不投这样的:

MembershipUserCollection Users; 
Users = (MembershipUserCollection)GetAllUsers(pageIndex, pageSize, out totalRecords).OfType<MembershipUser>().Where(user => user.Email == emailToMatch).Cast<MembershipUser>(); 

您asnwers谢谢你们。

+0

不幸的是它不起作用。 VS IDE接受了这一点,但在编译期间它返回错误。 – Wodzu 2010-10-22 12:45:09