У меня в настоящее время есть часть Linq, которая выглядит примерно так:Могу ли я генерировать выражение linq динамически в C#?
List<dynamic> childrenToBeRemoved = this.ItemsSource.Where(o => o.ParentID == "1234").ToList();
где ItemsSource - наблюдаемый набор динамики.
Это прекрасно работает, но проблема заключается в том, что ParentID является свойством, которое может варьироваться. Например. его можно назвать ParentPkey или ParentKey и т. д.
Могу ли я создать выражение, в котором я могу указать свойство, которое я хочу использовать в своем сравнении?
Я пробовал использовать динамический linq, но он не работает с использованием набора динамиков, отлично работает с коллекцией pocos.
Спасибо ...
Почему это условие может измениться? ... почему бы не сделать 'Func', который вы затем вводите как' this.ItemSource.Where (myFunc) 'вместо того, чтобы сделать сам параметр динамическим (это все еще возможно, но накладные расходы в выражениях и дженериках могут не стоить Это)? –
[да, вы можете] (http://msdn.microsoft.com/en-us/library/bb397951.aspx), но это похоже на то, что вы используете динамический дробовик, чтобы убить статическую муху. –
Условие такое же, но свойство, которое я использую в этом выражении, может измениться, я рассматриваю здание как условие, используя построитель дерева выражений, но ваш правильный выглядит как массивный молот и очень маленький гвоздь. Учитывая, что свойство может меняться, как выглядит первый подход Func? –