2012-08-10 79 views
0

我有2字段FromDate和ToDate在數據庫中。我想要結果LINQ查詢具有2個日期的月份差異與某些動態值的記錄。Linq查詢與2個日期之間的月份差異

其實我有一個數據庫表作爲EmploymentHistory與字段NameOfCompany作爲nvarchar(50),ProfileID作爲bigint,EmoploymentFrom作爲日期時間,EmploymentUpto作爲日期時間,IsCurrentEmployer作爲位。

ProfileID是Profile 的引用密鑰我想根據月經驗生成所有配置文件的查詢。

如果IsCurrentEmployer爲true,那麼EmploymentUpto爲null。

回答

9

如果你在.NET 4+你可以嘗試EntityFunctions.DiffMonths實用方法如:

var query = query 
      .Where(i=> 
       EntityFunctions.DiffMonths(i.FromDate, i.ToDate) == 2 
      ); 
+3

'EntityFunctions'現在已經被'DbFunctions' – Flexicoder 2016-09-19 09:31:06

0

一旦你拉出來日期的分貝,你可以執行該代碼

var resultWithMonth = datevalue2.Subtract(datevalue2).Days/(365.25/12) 
0

,您可以用減法FUNC作爲選擇參數進行壓縮操作。

IEnumerable<DateTime> datesA = //blah; 
IEnumerable<DateTime> datesB = //blah; 
IEnumerable<DateTime> differences = 
    datesA.Zip(datesB, (dA,dB) => dA.Subtract(dB)); 
1

Asuming您使用實體框架.. U可以

Query(q => q.ToDate < DateTime.Today && q.FromDate > DateTime.Today.AddMonths(-2)) 

查詢任何Iqueryable ..可以選擇,第一,firstOrDefault .. 當然你可以改變DateTime.Today你的params。