Как написать String.Contains в динамическом Linq - PullRequest
6 голосов
/ 09 августа 2010

Я пытаюсь написать динамический запрос linq, например:

var q = obj.Where("message.Contains('hello')");

Я знаю, что он работает для

var q = obj.Where(o => o.message.Contains('hello'));

, но я ищу динамическое решение linq

Спасибо.

Ответы [ 2 ]

12 голосов
/ 11 августа 2010

Нашел мой ответ сейчас.

var q = obj.Where("message.Contains(@0)", "hello");
1 голос
/ 10 августа 2010

Я знаю, что это не то, что вы ищете, а просто точка зрения:

В зависимости от того, сколько различных видов операций вы ожидаете выполнить, я бы создал оператор switch для этого.

В качестве примера, некоторый псевдокод с использованием перечисления:

(OperationType - это Enum, если необходимо)

private object example(OperationType optype, Object obj, String match)
{
   var q;
   switch (optype)
        {
        case OperationType.Contains:
            q = obj.Where(o => o.message.Contains(match));
        break;
        case OperationType.EndsWith:
            q = obj.Where(o => o.message.EndsWith(match));
        break;
        case OperationType.StartsWith:
            q = obj.Where(o => o.message.StartsWith(match));
        break;
    }
    return q;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...