ССЫЛКА на SQL:Как написать "Мне нравится"?
-
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
Незначительный момент.Это отлично работает!