[英]Problems with casting LinQ result to strongly typed collection
我想这是微不足道的,但对我来说不是。
我有一个MembershipUserCollection
集合。 我想对其执行一些Linq查询,因此我使用了OfType<MembershipUser>()
方法,然后在其上应用Where()
。 但是,我不知道如何将结果回退到MembershipUserCollection
?
这是我的代码:
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
谢谢你的时间。
我认为您不能在查询本身中执行此操作,但是您应该可以执行以下操作:
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);
}
(当然,如果需要,您可以将该逻辑包装到扩展方法中,然后在查询中调用该扩展方法。)
可能的解决方案之一:
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);
}
所以这很简单,我只需要像这样进行转换:
MembershipUserCollection Users;
Users = (MembershipUserCollection)GetAllUsers(pageIndex, pageSize, out totalRecords).OfType<MembershipUser>().Where(user => user.Email == emailToMatch).Cast<MembershipUser>();
谢谢你们的支持。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.