2012-06-08 36 views
0

我遇到了似乎不支持LINQ到对象集合的几个实例。最近,默认ASP.Net成员资格提供工作,此代码:使用LINQ与某些类别的对象 - “选择”未找到

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

产生编译器错误

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

在哪里查询模式的实现存在?

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

我怎样才能“明确指定”的范围变量的类型,并且将帮助?

回答

2

那么这个集合的问题是它实现了非泛型IEnumberable接口。 Linq扩展方法不适用于这个非泛型接口,这就是为什么你的代码不能编译。 您可以在这里做两件事。首先检查了this link,它的LINQ方式完成本次非通用接口的实现。

另一种解决办法是使用的IEnumerable确实有铸造法:

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

现在你可以使用你想要的永远LINQ方法。

+0

非常酷,谢谢。 –