2008-09-18 51 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命名空間

+0

很酷。我正在跑步。爲了訪問年份屬性,我確實需要對DateTime進行「stoptime」類型的轉換,但沒有什麼大不了的。 – 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

如果停止時間數據類型爲字符串,就可以使用。載有()函數,也.StartsWith()和.EndsWith()。

0

如果你使用contains方法,那麼你正在做一個LIKE'%somestring%'。如果您使用startswith方法,那麼它與'somestring%'相同。最後,endswith與使用'%somestring'相同。

總括而言,包含將在字符串中找到任何模式,但startswith和endswith將幫助您在單詞的開始和結尾找到匹配項。

0

真正有趣的一點是,當您使用「from x from context.Table」,其中x.Contains(「test」)選擇時,.NET會創建類似於「Select * from table where''%test%'' x「這是相當令人印象深刻

0

謝謝 - 很好的答案。

這實際上是一個DateTime類型;我不得不強調類似於「stoptime」:

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

小問題。它很棒!