2010-10-22 54 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