Компилятор сгенерирует дерево выражений из приведенного выше утверждения. Поскольку LIKE является специфичной для SQL конструкцией и не является общей для всех поставщиков запросов LINQ, класс SqlMethods и его члены используются как "подсказка" для компилятора выражения (компилирует деревья выражений для SQL), чтобы испускать LIKE утверждение.
Ответ 3
Первая мысль, которая приходит на ум, - Regex.IsMatch.
Это будет ближе всего к обеспечению функциональности, которую вы получаете от LIKE; например, с ним вы могли бы сделать это:
var matches = people.Where(p => Regex.IsMatch(p.Name, "A.*[mn]"));
foreach (Person match in matches)
{
Console.WriteLine(match.Name);
}
И получим такой вывод:
Adam
Aaron
Aidan
Переход с string.Contains, как предлагали другие, почти наверняка предпочтительнее, если вы намерены просто искать определенную подстроку внутри Name.
Ответ 4
using System.Data.Linq.SqlClient;
...
customers.where(c=>SqlMethods.Like(c.Name, "john"));
Ответ 5
Используйте Regex.IsMatch в инструкции where или для более простой версии без подстановочных знаков и т.д.: