где я могу найти анализатор LinQ - PullRequest
2 голосов
/ 17 апреля 2011

Я бы хотел, чтобы мои пользователи могли писать и выполнять запросы linq.Для этого мне нужен анализатор linq.Этот синтаксический анализатор понимает только выражение linq, а не полный язык C #.

Так, например, если у нас есть класс Order {public int OrderId;} List list = ...

пользователь должен иметь возможность ввести в пользовательском интерфейсе «выбрать p в списке, где p.OrderId> 2»;И это вернет заказы, где orderId> 2.

Существует ли?

Ответы [ 2 ]

1 голос
/ 17 апреля 2011

Самый быстрый способ сделать это:

  1. Вставить выражение в файл C #, который сгенерирует метод, который будет возвращать запрос как выражение>; например, для

    from x in Foos select x.Y
    

    Вы можете испустить:

    class Wrapper {
        IEnumerable<blah> Foos;
        public static Expression<Func<object>> Expr { 
            get { return from x in Foos select x.Y; } 
        }
    }
    
  2. Вызовите компилятор C # для файла.

  3. Загрузите полученную сборку.
  4. Доступ к собственности
  5. Используйте дерево Linq, как душе угодно.

В качестве побочного продукта вы получаете проверку типов и кучу других вещей. Единственный реальный недостаток - вам необходимо хорошее понимание среды, в которой будет выполняться запрос; если одна из вещей, которую вы пытаетесь сделать, это понять окружающую среду, то это не очень вам поможет.

0 голосов
/ 17 апреля 2011

Вы можете создать своих собственных провайдеров Linq, вот обзор MSDN

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...