Linq to objects 将Linq用于具有特定集合的对象-';选择';找不到

Linq to objects 将Linq用于具有特定集合的对象-';选择';找不到,linq-to-objects,Linq To Objects,我遇到了一些似乎不支持Linq to对象的集合实例。最近,使用默认的ASP.Net成员资格提供程序时,此代码: var membershipUsers = (from m in Membership.FindUsersByName(userName) select m); 生成编译器错误 找不到源类型的查询模式的实现 “System.Web.Security.MembershipUserCollection.”选择“未找到”。 考虑显式指定范围变量“m”的类型。 查询模式的实现驻留在哪里 我可

我遇到了一些似乎不支持Linq to对象的集合实例。最近,使用默认的ASP.Net成员资格提供程序时,此代码:

var membershipUsers = (from m in Membership.FindUsersByName(userName) select m);
生成编译器错误

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

查询模式的实现驻留在哪里

我可以创建自己的实现吗?怎么做


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

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

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

 var linqableMembershipUsers = membershipUsers.Cast<MembershipUser>();
var linqableMembershipUsers=membershipUsers.Cast();
现在您可以使用所需的linq方法