我有一个可以为空的日期时间的数据库表字段。出于某种原因,我可以让下面的查询工作。
var requests = _db.Requests
.Where(r => r.processedDate.Value == processDate);
我100%确定我有四个匹配的日期,但我一直没有得到任何回报。我已尝试过此查询的各种变体,但没有成功。
更新
比较不起作用的原因是我通过javascript函数传递processDate,就像这样
function Reprocess(processDate, spanid) {
if(confirm('Are you sure you want to re-process this batch?')) {
$.ajax({
type: "Post",
url: "?ajaxFunction=Reprocess",
data: processDate,
success: function (data, textStatus, jqXHR) {
$(spanid).html(data);
}
});
}
}
当我这样做时,我被迫将DateTime转换为字符串,以便将其传递给我的函数。当我将它转换为字符串时,它会转换为秒,因此会损失毫秒数。这就是为什么Linq查询找不到任何匹配(因为14毫秒)。
如何通过javascript传递完整的日期时间值?或者我必须比较日期,小时,分钟和秒?
答案 0 :(得分:1)
如果您在转到JavaScript之前将其转换为字符串服务器端,请尝试以下操作:
C#
// Make sure processDateStr gets to your JavaScript function
string processDateStr = processDate.ToString("o");
然后当您再次在服务器上获取字符串值时,使用此值恢复相同的值:
DateTime processDate = DateTime.Parse(processDateStr, null, DateTimeStyles.RoundtripKind);
该值将与原始值完全一致。
修改强>
“o”格式说明符是往返说明符。您可以阅读更多相关信息here on MSDN。