Linq to entity 如何计算时间差

zhpk85 2011-10-11 11:54:33
在Linq to entity 如何计算时间差呢?我已经试了好几种方法都不行(开发环境:VS2008 - .NET3.5),例如:SqlMethods.DateDiffDay和System.Data.Objects.EntityFunctions.DiffDays,前者好像只能在Linq to sql 中用,后者只能在.NET4.0以上版本中才能用,Subtract也试过了,都不行,请问我现在要用Linq to entity计算数据库表TableA中两个日期字段fStartDate和fEndDate之间的时间差(天数)该怎么写呢?
...全文
715 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
机器人 2011-10-12
  • 打赏
  • 举报
回复
额。仔细想想不妥。月份不等就没搞头了。oRZ
机器人 2011-10-12
  • 打赏
  • 举报
回复
来个土办法吧

 var orders = from ord in ctx.Orders
where ord.OrderDate.Value.Year == ord.RequiredDate.Value.Year
&& ord.OrderDate.Value.Month == ord.RequiredDate.Value.Month
&& ord.OrderDate.Value.Day < ord.RequiredDate.Value.Day - 1
threenewbee 2011-10-12
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zhpk85 的回复:]
我们那个项目都是用Linq to entity 所以没法改
[/Quote]

参考:http://msdn.microsoft.com/zh-cn/library/bb738563(v=VS.90).aspx
http://msdn.microsoft.com/zh-cn/library/dd456858.aspx

EF支持SQL混合调用,也可以调用存储过程。
zhpk85 2011-10-12
  • 打赏
  • 举报
回复
我们那个项目都是用Linq to entity 所以没法改
threenewbee 2011-10-12
  • 打赏
  • 举报
回复
哦,没注意,不好意思。

VS2008不支持吗?实在不行,只能调用SQL了。
zhpk85 2011-10-12
  • 打赏
  • 举报
回复
不好意思,你大概没真看清我的问题,我使用的是VS2008,你说的那个方法在这个版本中是没有的,所以不能用。
threenewbee 2011-10-12
  • 打赏
  • 举报
回复
db.Entity1Set.Where(x => System.Data.Objects.EntityFunctions.DiffDays(DateTime.Now, x.date) > -10).ToList().ForEach(x => Console.WriteLine(x.Id)); //间隔小于10天

zhpk85 2011-10-12
  • 打赏
  • 举报
回复
谢谢你的耐心回答,但是这个算法:(年-2000)×384 + 月×32 + 日
我算了一下不对,例如你的起始日期为2011-1-1截止日期为2011-12-31,那么根据你这个算法应该是382,实际上应该是364。
机器人 2011-10-12
  • 打赏
  • 举报
回复
Entities Sql


var query = "SELECT VALUE O FROM NORTHWNDEntities.Orders AS O WHERE SqlServer.DATEDIFF('DAY', O.RequiredDate, O.OrderDate) < 1";
ctx.Connection.Open();
var orders = new ObjectQuery<Order>(query, ctx);
foreach (var o in orders)
Console.WriteLine(o.OrderID);


另外,上面的土办法可以用:
(年-2000)×384 + 月×32 + 日

来计算。。。

8,497

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 LINQ
社区管理员
  • LINQ
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧