0

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

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

4

1 回答 1

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”格式说明符是往返说明符。您可以在 MSDN 上阅读有关它的更多信息。

于 2012-11-02T15:11:43.153 回答