0

我遇到了一些似乎不支持 Linq to Objects 的集合实例。最近,使用默认的 ASP.Net Membership Provider,此代码:

var membershipUsers = (from m in Membership.FindUsersByName(userName) select m);

产生编译器错误

找不到源类型“System.Web.Security.MembershipUserCollection”的查询模式的实现。未找到“选择”。考虑明确指定范围变量“m”的类型。

查询模式的实现在哪里?

我可以创建自己的实现吗?如何?

如何“明确指定”范围变量的类型,这会有所帮助吗?

4

1 回答 1

2

这个集合的问题在于它实现了非通用 IEnumberable 接口。Linq 扩展方法不适用于此非通用接口,这就是您的代码无法编译的原因。您可以在这里做两件事。首先查看此链接,它具有此非通用接口的 linq 方法的实现。

另一种解决方案可能是使用 IEnumerable 确实具有的 Cast 方法:

 var linqableMembershipUsers = membershipUsers.Cast<MembershipUser>();

现在您可以使用您想要的任何一种 linq 方法。

于 2012-06-09T13:43:36.200 回答