【发布时间】:2012-05-08 11:34:14
【问题描述】:
我目前有一块看起来像这样的 Linq;
List<dynamic> childrenToBeRemoved = this.ItemsSource.Where(o => o.ParentID == "1234").ToList();
其中 ItemsSource 是动态的 ObservableCollection。
这很好用,但我遇到的问题是 ParentID 是一个可以变化的属性。例如。它可以命名为 ParentPkey 或 ParentKey 等。
我可以创建一个表达式来指定我想在比较中使用的属性吗?
我尝试过使用动态 linq,但它不能使用动态集合,但可以很好地与 pocos 集合一起使用。
谢谢...
【问题讨论】:
-
为什么情况会有所不同? ...为什么不创建一个
Func<TItem, bool>,然后将其注入为this.ItemSource.Where(myFunc),而不是使参数本身动态化(仍然可以,但表达式和泛型的开销可能不值得)? -
yes, you can 但感觉就像是在使用动态霰弹枪杀死静态苍蝇。
-
条件相同,但我在该表达式中使用的属性可能会改变,我正在使用表达式树构建器来构建条件,但您的正确似乎是一个巨大的锤子和一个很小的钉子。鉴于属性可以改变第一个 Func
方法的外观如何? -
为什么属性会变化?! (顺便说一句 - 如果属性不同,条件本身也不同!)
-
@Bendy 查看我的回答,了解如何使用
Func<TItem, bool>-approach