select * from transaction_log where stoptime like '%2008%'
Как написать это в синтаксисе LINQ to SQL?
Ответ 1
Если вы хотите использовать литерал-метод, он выглядит так:
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;
Если это DateTime:
var query = from l in transaction_log
where l.stoptime.Year = 2008
select l;
Этот метод находится в пространстве имен System.Data.Linq.SqlClient
Ответ 2
from x in context.Table where x.Contains("2008") select x
Ответ 3
Если тип данных останова - строка, вы можете использовать функцию .Contains(), а также .StartsWith() и .EndsWith().
Ответ 4
Если вы используете метод contains to method, вы делаете LIKE '% somestring%'. Если вы используете метод startswith, то он будет таким же, как "somestring%". Наконец, endswith совпадает с использованием "% somestring".
Подводя итог, содержит найденный шаблон в строке, но startswith и endswith помогут вам найти совпадения в начале и конце слова.
Ответ 5
Интересно, что .NET создает такие запросы, как "Выберите * из таблицы, где такое имя, как" % test% ", когда вы используете" из x в контексте ". Таблицу, где x.Contains(" test ") выберите x", что весьма впечатляет
Ответ 6
Спасибо - хорошие ответы.
Это, по сути, тип DateTime; Мне приходилось прибегать к типу "stoptime" как:
var query = from p in dbTransSummary.Transaction_Logs
where ( (DateTime) p.StopTime).Year == dtRollUpDate.Year
select