2013-09-01 52 views
1

我已經返回了我一個月的第一天的SQL語句:LINQ到SQL - 開始月份

DATEADD(month, DATEDIFF(month, 0, @input), 0) 

我將如何重新使用SQLFunctions.DateAdd和SQLFunctions.DateDiff這個電話?

在此先感謝

+1

使用[SQLFunctions](http://msdn.microsoft.com/en-us/library/system.data.objects.sqlclient.sqlfunctions.aspx),你不會走得太遠,考慮到'提供通用語言運行時(CLR)方法調用數據庫中的函數在** LINQ to Entities查詢**。 – xanatos

回答

0

如果你真的使用LINQ到SQL:

var zero = new DateTime(2000, 1, 1); 

var resxxxx = (from p in ctx.Addresses 
       select new { 
          month = zero.AddMonths(SqlMethods.DateDiffMonth(zero, p.Date)) 
          } 
      ).FirstOrDefault(); 

的重要組成部分,是month = zero.AddMonths(SqlMethods.DateDiffMonth(zero, p.Date))

請注意,我已使用zero = new DateTime(2000, 1, 1);,但本月的任何一天都可以(1980年1月1日,1983年1月1日,2100年1月12日...)。這是您的SQL命令中的兩個0p.Date是您要計算月份的第一天的日期(所以@input)。

+1

感謝您的答案 - 我實際上使用實體框架(因此SqlMethods是不允許的)。但我設法從你的答案中找出解決方案: var zero = new DateTime(2000,1,1); month = SqlFunctions.DateAdd(「month」,SqlFunctions.DateDiff(「month」,zero,p),zero); – Stuart