繁体   English   中英

将LinQ转换为强类型集合会导致问题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM