使用Linq到EF将可空日期时间与日期时间进行比较

时间:2012-11-01 20:54:34

标签: c# javascript datetime linq-to-entities nullable

我有一个可以为空的日期时间的数据库表字段。出于某种原因,我可以让下面的查询工作。

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传递完整的日期时间值?或者我必须比较日期,小时,分钟和秒?

1 个答案:

答案 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