public static string[] GetPath <TSource, TResult>(Expression <Func <TSource, TResult> > expression) { var visitor = new PathExpressionVisitor(); visitor.Visit(expression.Body); return(Enumerable.Reverse(visitor._path).ToArray()); }
private void OkButton_OnClick(object sender, RoutedEventArgs e) { SmartPlaylist.Name = SmartPlaylistName.Text; SmartPlaylist.Conditions.Clear(); foreach (QueryConditionEditor conditionEditor in ConditionEditors) { SmartPlaylist.Conditions.Add(new QueryCondition { Field = PathExpressionVisitor.GetPath(conditionEditor.Model.Field.Value).First(), Operator = conditionEditor.Model.Operator.Value, Value = conditionEditor.Model.Value }); } DialogResult = true; Close(); }