ССЫЛКА на SQL:Как написать "Мне нравится"?

StackOverflow https://stackoverflow.com/questions/91986

  •  01-07-2019
  •  | 
  •  

Вопрос

У меня есть следующий SQL:

select * from transaction_log where stoptime like '%2008%'

Как мне написать это в синтаксисе LINQ to SQL?

Это было полезно?

Решение

Если вы хотите использовать буквальный метод, это выглядит следующим образом:

var query = from l in transaction_log
            where SqlMethods.Like(l.stoptime, "%2008%")
            select l;

Другим вариантом является:

var query = from l in transaction_log
        where l.stoptime.Contains("2008")
        select l;

Если это дата-время:

var query = from l in transaction_log
        where l.stoptime.Year = 2008
        select l;

Этот метод находится в System.Data.Linq.SqlClient пространство имен

Другие советы

from x in context.Table where x.Contains("2008") select x

Если тип данных stoptime - string, вы можете использовать функцию .Contains(), а также .StartsWith() и .EndsWith() .

Если вы используете метод contains to, то вы выполняете ЧТО-то ВРОДЕ '%somestring%'.Если вы используете метод startswith, то это то же самое, что и 'somestring%'.Наконец, endswith - это то же самое, что использовать '%somestring'.

Подводя итог, contains найдет любой шаблон в строке, но startswith и endswith помогут вам найти совпадения в начале и конце слова.

Действительно интересный момент заключается в том, что .NET создает запросы типа "Выбрать * из таблицы, где имя похоже на "%test%"", когда вы используете "from x в контексте.Таблица, где x.Содержит("test") select x", что весьма впечатляет

Спасибо - хорошие ответы.

По сути, это тип DateTime;Мне пришлось ввести "stoptime" как:

var query = from p in dbTransSummary.Transaction_Logs
    where ( (DateTime) p.StopTime).Year == dtRollUpDate.Year
    select

Незначительный момент.Это отлично работает!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top