как использовать как оператор в лямбда-выражении - PullRequest
2 голосов
/ 18 января 2011

Здравствуйте, вопрос о том же условии, используя лямбда-выражение.

Я надеюсь, что вы можете ответить на этот пост как можно скорее (это немного срочно)

Мой вопрос заключается в том, как делать подобные запросы, я понимаю, яМожно использовать старты с, содержит и т. д. или sqlmethods, как.Но как использовать их в лямбда-выражении.

Например, например: сущность Person содержит имя, в приведенном ниже примере я ищу person.name = 'john'.

Но пользователь может выбратьлюбой оператор во время выполнения для сравнения (например, равно, начинается с, заканчивается и т. д.) Например.это может быть person.name = 'john' или person.name, например, 'j%', или person.name, например, '% j', или person.name содержит '% jo%'

, как я могу построить динамический запрос,Можете ли вы изменить код выше и дайте мне знать.Поскольку я совсем новичок в linq, я не очень хорошо понимаю лямбду.

Ваша помощь приветствуется.

Исходный код -

  DataContext context = new DataContext // linq to sql data context.
  Query<Person> q = new Query<Person>(context);
  Expression<Func<Manufacturer, bool>> expn = DynamicExpression.ParseLambda<Manufacturer, bool>(condition, value); //condition is "name=@0",   value = string[] i.e - "john"
                q.Where = expn;
                return q.SingleOrDefault<Person>();

например, expn is name =@ 0, но я хочу сделать имя как '% @ 0%' как?

Класс запроса выглядит следующим образом

public Expression<Func<T, bool>> Where
{
    set { m_where = value; }
}

Ответы [ 2 ]

5 голосов
/ 20 апреля 2011

Вы можете попробовать это!

list.exists (element => element.startswith («начало текста для поиска в списке»))

0 голосов
/ 18 января 2011

В Linq2SQL вы можете использовать SqlMethods.Like.

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