我在下面的代码工作正常,但是当我尝试添加Where
子句来过滤集合时,我得到错误:
'对象'不包含' Where'的定义没有延伸 方法'哪里'接受类型'对象'的第一个参数。可能 发现(您是否缺少using指令或程序集引用?)
我尝试将对象转换为OfType<Certification>
但失败了。我也试过转换为IQueryable
,但是失败并出现了类似的错误。所以我检查了我的认证变量的类型,它是"System.Collections.Generic.List``1[[GainesTrader_WCF.Certification, GainesTrader WCF,"
。你能看到解决方案吗?
GainesTrader_WCF.Service1 client = new GainesTrader_WCF.Service1();
object certifications = client.GetCertifications();
//var filtered = certifications.OfType<Certification>().Where(o => o.CertificationAcronym == "MCSD");
var filtered = certifications.Where(o => o.CertificationAcronym == "MCSD");
Certifications.DataSource = filtered;
Certifications.DataBind();
答案 0 :(得分:1)
您应该将certifications
变量转换为IEnumerable<Certification>
类型:
var filtered = certifications
.OfType<IEnumerable<Certification>>()
.Where(o => o.CertificationAcronym == "MCSD");
或
var certifications = (IEnumerable<Certification>)client.GetCertifications();
var filtered = certifications.Where(o => o.CertificationAcronym == "MCSD");
答案 1 :(得分:1)
为什么类型为对象的证书变量?查看WCF代理并验证返回类型。设置代理时,visual studio应该已经下载了所有相关类型。
此外,这是第一次,我看到有人将Where扩展方法应用于Object类型。它甚至没有意义。