powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Динамический Expression<Func<T1,T2>>
2 сообщений из 2, страница 1 из 1
Динамический Expression<Func<T1,T2>>
    #38003654
maratoss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не могу придумать как построить динамический Expression(
У меня есть:
- объект
- имя свойства
- чему должно быть равно значение свойства

нужно как-то построить выражение Where? т.е.
Код: c#
1.
2.
3.
query = query.Where(мойОбъект => мойОбъект.ИмяСвойства1 == Значение свойства1);
query = query.Where(мойОбъект => мойОбъект.ИмяСвойства1 == Значение свойства2);
...


Вообщем пройтись по всем столбцам ДатаГрида и построить одно linq выраженине для фильтрации коллекции ДатаГрида.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
private LoadOperation<User> LoadSampleEntities()
{
        EntityQuery<User> query = _context.GetAllUserQuery();
        var view = jibGrid2.ItemsSource as ICollectionView;

        //jibGrid2.FilterHeaders - здесь все данные о фильтре
        //введенное значенине для фильтрации
        //имя свойства
        //Как искать в начале строки или в конце или посередине и т.д.
        foreach (var filter in jibGrid2.FilterHeaders)
        {
             if (filter.HasPredicate)
             {
                   //Вот тут и нужно построить это выражение Expression<Func<User, bool>>
                   //query = query.Where(???);
             }
       }

       return _context.Load(query.SortAndPageBy(view));
 }
...
Рейтинг: 0 / 0
Динамический Expression<Func<T1,T2>>
    #38003951
maratoss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос снимается, сделал так:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
        foreach (var filter in jibGrid2.FilterHeaders)
        {
             if (filter.HasPredicate)
             {
                  ParameterExpression pExpression = Expression.Parameter(typeof(User), "x");
                  Expression leftExpr = Expression.Property(pExpression, typeof(User).GetProperty(filter.FilterColumnInfo.PropertyPath));
                  Expression equals = Expression.Equal(leftExpr, Expression.Constant(filter.FilterText));
                  var expression = Expression.Lambda<Func<User, bool>>(equals, new[] { pExpression });
                  query = query.Where(expression);
             }
       }
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Динамический Expression<Func<T1,T2>>
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]