2012-08-10 61 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。