НРАВИТСЯ с Linq для сущностей - PullRequest
6 голосов
/ 20 октября 2010

Я знаю, что метод .Contains() похож на LIKE %therm%, метод .StartsWith() похож на LIKE therm%, а метод .EndsWith() похож на LIKE %therm, но ...

Есть ли способсделать, как показано ниже на **Linq to Entities**?

SELECT * FROM [dbo].[Users] WHERE Name LIKE 'rodrigo%otavio%diniz%waltenberg'

PS: Я ИСПОЛЬЗУЮ LINQ ДЛЯ ЛЮДЕЙ.НЕ СВЯЗАНО С SQL

Ответы [ 3 ]

2 голосов
/ 21 октября 2010

Да, это можно сделать с помощью ESQL / Синтаксис Query Builder:

var matching = Context.Users.Where("it.Name LIKE 'rodrigo%otavio%diniz%waltenberg'");
2 голосов
/ 20 октября 2010

Это должно сработать.

from u in context.users
    where System.Data.Linq.SqlClient.SqlMethods.Like(
        u.Name, 
        "rodrigo%otavio%diniz%waltenberg")
    select u

Edit:
Оказывается, это работает только с LINQ2SQL, но не с LINQ2Entities. Linq SqlMethods.Like терпит неудачу предполагает, что вы можете использовать Where непосредственно на столе.

0 голосов
/ 21 октября 2010

Как насчет использования регулярных выражений с оператором LINQ?Примерно так:

        RegularExpressions.Regex p 
             = new RegularExpressions.Regex("rodrigo%otavio%diniz%waltenberg");

        using (DataContext.MyDataContext context = new MyDataContext())
        {
            var result = from u in context.users
                      where p.IsMatch(u.name)
                      select u;
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...