繁体   English   中英

ADO.NET:超时查询数据表

[英]ADO.NET: query a DataTable on a timeout

我有一个内存数据表,其中包含两个DateTime类型的字段,分别是LastAction和LastHeartbeat,这意味着实体上次发送活动日志消息的时间和该实体最后一次发送心跳(“我还活着”)日志消息的时间。

我正在构建一种使用各种条件查询数据表的方法,包括系统中实体的“最长不活动时间”。 此最大超时是为了同时考虑LastAction和LastHeartbeat,因此查询类似于(LastAction > Now-timeout || LastHeartbeat > Now-timeout) ,现在可以了。 超时值以整数秒表示。

目前我分两行进行

DateTime lastActivity = DateTime.UtcNow.Subtract(TimeSpan.FromSeconds(maxinactivity));
filters.Add(string.Format("({0} >= {2} OR {1} >= {2}}", _colLastAction.ColumnName, _colLastHeartbeat.ColumnName, lastActivity.ToString(CultureInfo.InvariantCulture)));

最终结果将取决于执行查询的当前时间(LastAction >= #...# OR LastHeartbeat >= #...#)

我的问题是:我可以从查询中减去日期吗? 是否存在运算符,以便我可以直接在查询中键入超时? 在SQL中,至少在MySQL中,我能够使用NOW()函数进行日期减法。 在ADO.NET中也可能吗? Kepp谨记,这是脱机ADO.NET的内存表,因为不应以任何方式保留数据。

谢谢

如果您要问的是是否可以在查询字符串中执行日期算术,则否;否则,否。 DataTableDataView中可用的过滤和查询功能都很简单。 根据您在做什么,最好改用LINQ查询。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM