我可以在C#中动态生成linq表达式吗?我目前有一块看起来像这样的Linq;列出childrenToBeRemoved=this.ItemsSource.Where(o=>o.ParentID=="1234").ToList();其中ItemsSource是一个动态的ObservableCollection。这工作正常,但我遇到的问题是ParentID是一个可变属性。例如,它可以命名为ParentPkey或ParentKey等。我可以创建一个表达式来指定要在比较中使用的属性吗?我尝试使用动态linq,但它不能与动态集合一起使用,但可以与pocos集合一起使用。谢谢...查询是否为动态linq并不重要Expression>predicate=x=>x.Id==myvalue;从_context.Entities.Where(predicate)中的实体选择实体;查看LinkKit的PredicateBuilder@http://www.albahari。com/nutshell/linqkit.aspx上有足够多的示例将表达式转换为相应的sql的责任在于linq提供程序,因此请确保您使用的提供程序支持相关方面为什么要使实现本身动态化?你可以简单地做一个动态调用!可枚举的结果;if(condition1){result=this.Items.Where(arg=>arg.ProductId=="123");}elseif(condition2){result=this.Items.Where(arg=>arg.ProductPK=="123");}或Func谓词;if(condition1){predicate=item=>item.ProductId=="123";}elseif(condition2){predicate=item=>item.ProductPK=="123";}varresult=this.Items.Where(predicate);Sooo...我相信你应该告诉我们更多关于你的实际问题-我认为目前没有必要实施它...所以,我相信你的要求是模棱两可的!将linq表达式放入函数中并将此属性作为参数传递。如果知道项目类型,可以使用反射:以上是C#学习教程:CanIdynamicallygeneratelinqexpressionsinC#?分享的所有内容,如果对你有用,需要了解更多C#学习教程,希望大家多多关注——PropertyInfoparentProp=itemType.GetProperty("ParentKeyorwhatever");列出childrenToBeRemoved=this.ItemsSource.Where(o=>Equals("1234",parentProp.GetValue(o,null))).ToList();本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
