2008-09-18 2 views

ответ

29

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

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 namespace

+0

прохладный. Я ухожу. Мне приходилось прибегать к типу «stoptime» в DateTime, чтобы получить доступ к свойству Year, но не имеет большого значения. – 2008-09-18 17:17:29

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

Я не уверен, что это приводит к правильному Sql. Вам нужно будет просмотреть его. – Will 2008-09-18 12:22:16

1

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

0

Если вы используете метод contains to method, вы делаете LIKE '% somestring%'. Если вы используете метод startswith, то он будет таким же, как «somestring%». Наконец, endswith совпадает с использованием «% somestring».

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

0

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

0

Спасибо, что ответили хорошо.

Это, по сути, тип DateTime; Я должен был ввести «стоп-время» в качестве:

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

Незначительный пункт. Он отлично работает!

Смежные вопросы