如何构建IEnumerable.Contains()表达式?我目前正在使用ASP动态数据,并且正在尝试构建一个过滤器。我们的用户需要根据项目是否是所选父项的子项在列表中查找项目(我们的项目可以有多个父项)。有问题的项目是Segments,每个Segment都有一个名为RouteIds的属性,类型为IEnumerable,它是所有Segment的父ID的集合。我已经覆盖了我的过滤器中的GetQueryable方法,但我一直在显示的最后一行抛出异常:ConstantExpressionce=Expression.Constant(int.Parse(this.ddlRouteNames.SelectedValue));ParameterExpressionpe=Expression.Parameter(source.ElementType);MemberExpressionme=Expression.Property(pe,this.Column.Name);varcallExpression=Expression.Call(typeof(Enumerable),"Contains",newType[]{me.Type},ce,me);这个想法是,用户从DropDownList中选择适当的路由,然后我检查Segment的RouteIds属性是否包含该路由的ID。关于如何让它工作的任何指示?编辑-例外情况:类型“System.Linq.Enumerable”上的泛型方法“Contains”与提供的类型参数和参数不兼容。如果该方法是非泛型的,则不应提供任何类型参数。您的代码中有两个问题:您的参数向后。第一个参数必须是一个集合,第二个参数是您要搜索的项目。您的类型参数是IEnumerable,它应该只是int。所以,固定代码是:varcallExpression=Expression.Call(typeof(Enumerable),"Contains",new[]{typeof(int)},me,ce);但是您的表达式的任何部分似乎都不是动态的,所以也许以下内容也可以:以上是C#学习教程:如何构建IEnumerable.Contains()表达式?如果分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注—Expression>expression=s=>s.RouteIds.Contains(int.Parse(this.ddlRouteNames.SelectedValue));本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
