我在数据库中有2个Field FromDate和ToDate。我希望结果LINQ查询具有2个日期的月差与某个动态值的记录。
实际上我有一个数据库表作为EmploymentHistory,字段NameOfCompany为nvarchar(50),ProfileID为bigint,EmoploymentFrom为datetime,EmploymentUpto为datetime,IsCurrentEmployer为bit。
ProfileID是Profile的引用键 我希望按月的经验为所有个人资料生成查询。
如果IsCurrentEmployer为true,则EmploymentUpto为null。
答案 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));