У меня есть процедура в SQL, которую я пытаюсь превратить в Linq:
SELECT O.Id, O.Name as Organization
FROM Organizations O
JOIN OrganizationsHierarchy OH ON O.Id=OH.OrganizationsId
where OH.Hierarchy like '%/12/%'
Линия, которая меня больше всего волнует:
where OH.Hierarchy like '%/12/%'
У меня есть столбец, в котором хранится иерархия, например / 1/3/12 /, поэтому я просто использую% / 12 /% для ее поиска.
Мой вопрос: что такое Linq или .NET эквивалентно использованию знака процента?
5
голоса для тега like-operator . Могу ли я попросить вас предложить sql-like как синоним ?Ответы:
Вы также можете использовать
.StartsWith()
или.EndsWith()
.источник
StartsWith("abc")
превращается вLIKE 'abc%'
иEndsWith("abc")
превращается вLIKE '%abc'
.ToLower().Contains()
т. Д., Если хотите игнорировать регистр. То, хотите ли вы этого, будет, конечно, зависеть от того, пытаетесь ли вы подражать LIKE из БД с учетом сортировки без учета регистра или нет.Использовать этот:
источник
SqlMethods
используя «точечную нотацию»?System.Data.Linq.SqlClient
пространство имен.Я предполагаю, что вы используете Linq-to-SQL * (см. Примечание ниже). Если это так, используйте string.Contains, string.StartsWith и string.EndsWith для генерации SQL, в котором используется оператор SQL LIKE.
или
Примечание: * = если вы используете ADO.Net Entity Framework (EF / L2E) в .net 3.5, учтите, что он не будет выполнять тот же перевод, что и Linq-to-SQL. Хотя L2S выполняет правильный перевод, L2E v1 (3.5) преобразуется в выражение t-sql, которое будет вызывать полное сканирование таблицы в запрашиваемой вами таблице, если только в вашем предложении where или фильтрах соединения нет другого лучшего дискриминатора.
Обновление: это исправлено в EF / L2E v4 (.net 4.0), поэтому он генерирует SQL LIKE, как и L2S.
источник
@
знаком, но я понимаю, что это может быть хорошим соглашением.Если вы используете VB.NET, то ответ будет "*". Вот как бы выглядела статья where ...
Примечание: "*" Соответствует нулю или более символов. Вот статья msdn для оператора Like .
источник
Ну у меня тоже indexOf работает
источник
Используйте такой код
источник
.NET ядро теперь имеет
EF.Functions.Like
источник
Если вы не соответствуете числовым строкам, всегда хорошо иметь общий случай:
источник
Я делаю всегда это:
Я знаю, что не использую оператор like, но он отлично работает в фоновом режиме - это переводится в запрос с оператором like.
источник
Попробуй это, у меня нормально работает
источник
источник
Contains используется в Linq, также как Like используется в SQL.
, , ,
Вы можете написать свой SQL-скрипт в Linq следующим образом:
источник
Для тех, кто здесь, вроде меня, ищет способ «SQL Like» в LINQ, у меня есть кое-что, что работает очень хорошо.
Я нахожусь в случае, когда я не могу каким-либо образом изменить базу данных, чтобы изменить параметры сортировки столбцов. Так что я должен найти способ в моем LINQ сделать это.
Я использую вспомогательный метод, который
SqlFunctions.PatIndex
действует аналогично реальному оператору SQL LIKE.Сначала мне нужно перечислить все возможные диакритические знаки (слово, которое я только что выучил) в поисковом значении, чтобы получить что-то вроде:
а затем в LINQ для примера:
Поэтому для своих нужд я написал метод Helper / Extension
Если у кого-нибудь из вас есть предложения по улучшению этого метода, я буду рад вас услышать.
источник
Поздно, но я собрал это вместе, чтобы можно было проводить сравнения строк с использованием подстановочных знаков в стиле SQL Like:
источник