2008-10-14 56 views

回答

43

嘗試this

[Function(Name="GetDate", IsComposable=true)] 
public DateTime GetSystemDate() 
{ 
    MethodInfo mi = MethodBase.GetCurrentMethod() as MethodInfo; 
    return (DateTime)this.ExecuteMethodCall(this, mi, new object[]{}).ReturnValue; 
} 

編輯:這需要成爲你的DataContext類的一部分。

現在,您可以在查詢中使用GetSystemDate()而不是DateTime.Now。 至於日期差異,請參閱System.Data.Linq.SqlClient命名空間,特別是SqlMethods類的DayDiffXXX函數。

0

你可以使用的executeQuery獲得對SQL http://weblogs.asp.net/scottgu/archive/2007/08/27/linq-to-sql-part-8-executing-custom-sql-expressions.aspx

我所知道的完全控制儘管ADO.NET看起來似乎沒有什麼收益(或者說在收益率上)。

+0

那麼......那麼它不是一個LINQ表達式;-) – 2008-10-14 11:58:46

+0

真的:)但如果linq2sql應該是一個SQL的抽象,你應該不能夠在第一個地方使用SQL函數? :P – 2008-10-14 12:00:27

6

如果你不介意每次使用前查詢數據庫,我會建議採取以下解決辦法:在一個地方使用的executeQuery來獲得日期在這樣的數據上下文:

public partial class YourDataContext 
{ 
    public DateTime GetDate() 
    { 
    return ExecuteQuery<DateTime>("SELECT GETDATE()").First(); 
    } 
} 

,然後你可以寫

from subscription in dbContext.Subscriptions 
where subscription > dbContext.GetDate().AddDays(2) 
select subscription