Linq查询2个日期之间的月差异

时间:2012-08-10 12:34:53

标签: c# asp.net-mvc-3 linq entity-framework

我在数据库中有2个Field FromDate和ToDate。我希望结果LINQ查询具有2个日期的月差与某个动态值的记录。

实际上我有一个数据库表作为EmploymentHistory,字段NameOfCompany为nvarchar(50),ProfileID为bigint,EmoploymentFrom为datetime,EmploymentUpto为datetime,IsCurrentEmployer为bit。

ProfileID是Profile的引用键 我希望按月的经验为所有个人资料生成查询。

如果IsCurrentEmployer为true,则EmploymentUpto为null。

4 个答案:

答案 0 :(得分:12)

如果您使用的是.NET 4+,则可以尝试EntityFunctions.DiffMonths实用程序方法,例如:

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

答案 1 :(得分:1)

假设你正在使用实体框架..你可能

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

查询是任何Iqueryable ..可以是select,first,firstOrDefault .. 当然你可以将 DateTime.Today 更改为你的参数。

答案 2 :(得分:0)

您可以执行此代码

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

答案 3 :(得分:0)

从数据库中提取日期后,您可以执行zip操作,并使用subtract func作为选择参数。

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