Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何筛选通用列表?_C#_Linq_Generics - Fatal编程技术网

C# 如何筛选通用列表?

C# 如何筛选通用列表?,c#,linq,generics,C#,Linq,Generics,我有下面的代码,但当我尝试添加Where子句来过滤集合时,我得到了错误: “对象”不包含“Where”的定义,并且没有扩展名 方法“Where”接受类型为“object”的第一个参数可以是 找到(是否缺少using指令或程序集引用?) 我尝试将对象强制转换为类型的,但失败了。我还尝试转换为IQueryable,但失败了,出现了类似的错误。所以我检查了我的certifications变量的类型,它是“System.Collections.Generic.List``1[[GainesTrader\

我有下面的代码,但当我尝试添加
Where
子句来过滤集合时,我得到了错误:

“对象”不包含“Where”的定义,并且没有扩展名 方法“Where”接受类型为“object”的第一个参数可以是 找到(是否缺少using指令或程序集引用?)

我尝试将对象强制转换为类型的
,但失败了。我还尝试转换为
IQueryable
,但失败了,出现了类似的错误。所以我检查了我的certifications变量的类型,它是
“System.Collections.Generic.List``1[[GainesTrader\u 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();
GainesTrader_WCF.Service1 client=新的GainesTrader_WCF.Service1();
对象证书=client.GetCertifications();
//var filtered=certifications.OfType(),其中(o=>o.CertificationAcronym==“MCSD”);
var filtered=认证。其中(o=>o.CertificationAcronym==“MCSD”);
Certifications.DataSource=已筛选;
证书。数据绑定();

您应该将
认证
变量强制转换为类型
IEnumerable

var筛选=认证
第()类
其中(o=>o.CertificationAcronym==“MCSD”);

var certifications=(IEnumerable)client.GetCertifications();
var filtered=认证。其中(o=>o.CertificationAcronym==“MCSD”);

您应该将
认证
变量强制转换为类型
IEnumerable

var筛选=认证
第()类
其中(o=>o.CertificationAcronym==“MCSD”);

var certifications=(IEnumerable)client.GetCertifications();
var filtered=认证。其中(o=>o.CertificationAcronym==“MCSD”);

为什么类型为object的certificates变量?查看WCF代理并验证返回类型。设置代理时,visual studio应该下载所有相关类型


此外,这是我第一次看到有人将Where扩展方法应用于对象类型。它甚至没有意义。

为什么证书变量是Object类型?查看WCF代理并验证返回类型。设置代理时,visual studio应该下载所有相关类型


此外,这是我第一次看到有人将Where扩展方法应用于对象类型。它甚至没有任何意义。

什么类型是
client.GetCertifications()
return?编译器错误是正确的-
object
没有
Where
方法或扩展方法。您需要使用正确的集合类型,而不是
object
。为什么要用WCF标记它?它与WCF.Tim无关。我认为它建议使用基于我的变量名的WCF,我刚刚接受了我们正在密切关注。我已经编辑了标记以删除WCF。客户端是什么类型的
client.GetCertifications()
return?编译器错误是正确的-
object
没有
Where
方法或扩展方法。您需要使用正确的集合类型,而不是
object
。为什么要用WCF标记它?它与WCF.Tim无关。我认为它建议使用基于我的变量名的WCF,我刚刚接受了我们正在密切关注。我已编辑标记以删除WCF。我尝试了此操作,但失败了,因为它无法识别。OfType(我已经尝试过该解决方案)。因此,快速搜索说我的web.config中需要一个MVC版本。此项目不是MVC,因此它不在那里。因此,我在web.config中添加了MVC版本标记,它使网站崩溃。我可以将此保留为“原样”因为它正在工作。我想过滤掉我的MCAD证书,但这没什么大不了的。我不想花几个小时调试它。如果你看到一个简单的解决方法,我会尝试一下。谢谢。
类型的
与MVC无关。问题是你已经将
证书
声明为一个
对象,它没有
Where
method(或扩展名`.D Stanley,这就是解决方案。谢谢。我将对象类型更改为var,它成功了。我尝试了这个方法,但失败了,因为它无法识别。of类型(我已经尝试过该解决方案)。因此,快速搜索说我的web.config中需要一个MVC版本。此项目不是MVC,因此它不在那里。因此,我在web.config中添加了MVC版本标记,它使网站崩溃。我可以将此保留为“原样”因为它正在工作。我想过滤掉我的MCAD证书,但这没什么大不了的。我不想花几个小时调试它。如果你看到一个简单的解决方法,我会尝试一下。谢谢。
类型的
与MVC无关。问题是你已经将
证书
声明为一个
对象,它没有<代码>其中
方法(或扩展名“.D Stanley,这就是解决方案。谢谢。我将对象类型更改为var,效果很好。我本想给D Stanley一个正确的答案,但他只发表了一条评论。你的评论接近于正确答案。我按照他的建议将变量类型从object更改为var,效果很好。我喜欢答案简单的情况。你很满意对-将其声明为object没有意义。我对Linq还是比较陌生,var对我来说不是很直观。我会给D Stanley一个正确的答案,但他只发表了一条评论。你的评论接近正确答案。我按照他的建议将变量类型从object更改为var,这很有效。我喜欢answer很简单。你说得对——将其声明为对象是没有意义的。我对Linq还比较陌生,var对我来说不是很直观。
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");