2

我在数据库中有 2 个字段 FromDate 和 ToDate。我想要结果 LINQ 查询具有 2 个日期的月差和一些动态值的记录。

实际上,我有一个数据库表作为就业历史,其中 NameOfCompany 作为 nvarchar(50),ProfileID 作为 bigint,EmoploymentFrom 作为日期时间,EmploymentUpto 作为日期时间,IsCurrentEmployer 作为位。

ProfileID 是 Profile 的参考键我想按月的经验为所有配置文件生成查询。

如果 IsCurrentEmployer 为真,则 EmployUpto 为空。

4

4 回答 4

12

如果您在 .NET 4+ 下,您可以尝试EntityFunctions.DiffMonths实用方法,例如:

var query = query
            .Where(i=> 
                 EntityFunctions.DiffMonths(i.FromDate, i.ToDate) == 2
            );
于 2012-08-10T12:43:59.153 回答
2

假设您正在使用实体框架..您可以

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

Query 是任何 Iqueryable.. 可以选择,首先,firstOrDefault.. 当然你可以将DateTime.Today更改为你的参数。

于 2012-08-10T12:45:51.290 回答
0

你可以执行这段代码

var resultWithMonth = datevalue2.Subtract(datevalue2).Days / (365.25 / 12)
于 2012-08-10T12:39:03.687 回答
0

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

IEnumerable<DateTime> datesA = //blah;
IEnumerable<DateTime> datesB = //blah;
IEnumerable<DateTime> differences = 
  datesA.Zip( datesB, (dA,dB) => dA.Subtract(dB));
于 2012-08-10T12:40:00.823 回答