簡體   English   中英

無法比較LINQ中的兩個日期

[英]Unable to compare two dates in LINQ

我正在努力比較MVC中的日期。 我嘗試了所有方法,但仍然沒有任何進展。 似乎很奇怪。

這是我的以jQuery日歷為邊界的Datetime文本框。

@Html.TextBoxFor(x => x.dateofAction, ViewBag.filterdateTime as string, new { @id = "dateofAction", @placeholder = "Date Of Action", @class = "form-control datepicker validate[required, custom[date,future[min]]]", style = "width:80%;height:20px;" })

這是我的模型領域。

public DateTime? dateofAction { get; set; }

最后這是我的查詢

upld_id = (from c in db.ts_upld_doc where (c.upld_ModifiedDateTime).Value.Year == datemodified.Year select c.upld_docid).ToArray();

我擊中斷點並檢查。 我發現如下值。

  • 11/10/2016 12:00:00 AM : 11/10/2016 12:00:00 AM用戶提供的日期
  • 2016-10-11 13:52:53.583 -SQL表(upld_ModifiedDateTime)

我嘗試了多種方式,例如僅比較日期,日期,月份,年份,但對我沒有任何幫助。 有專家可以告訴我為什么出現這個問題嗎? 非常感謝你。

更改查詢以選擇一天中開始和結束之間的值

DateTime start = datemodified.Date;
DateTime end = start.AddDays(1);

upld_id = (from c in db.ts_upld_doc 
           where c.upld_ModifiedDateTime >= start && c.upld_ModifiedDateTime < end 
           select c.upld_docid).ToArray();

要么

upld_id = db.ts_upld_doc
    .Where(c => where c.upld_ModifiedDateTime >= start && c.upld_ModifiedDateTime < end)
    .Select(c => c.upld_docid);

首先從upld_ModifiedDateTime中刪除時間,然后使用DateTime.Compare方法進行比較,如下所示:

upld_id = (from c in db.ts_upld_doc where
        DateTime.Compare(
            new DateTime(c.upld_ModifiedDateTime.Year, c.upld_ModifiedDateTime.Month, c.upld_ModifiedDateTime.Day))
        ,datemodified) == 0
      select c.upld_docid).ToArray();

您應該在EF6中使用DbFunctions

var dateValue = datemodified.Date;

var upld_id = (
  from c in db.ts_upld_doc 
  where DbFunctions.TruncateTime(c.upld_ModifiedDateTime) == dateValue 
  select c.upld_docid).ToArray();

如果您使用的是舊版EF,請使用EntityFunctions

var dateValue = datemodified.Date;

var upld_id = (
  from c in db.ts_upld_doc 
  where EntityFunctions.TruncateTime(c.upld_ModifiedDateTime) == dateValue 
  select c.upld_docid).ToArray();

datemodified聲明,以及它是如何得到它的價值呢?
如果通過Controller中的Action方法聲明並設置了datemodified ,則您選擇的參數名稱可能是問題。

因此,這將不起作用:

// MVC ignores Form field 'dateofAction' because it expects 'datemodified'.
[HttpPost]
ActionResult Index(DateTime datemodified) { ... }

鑒於這應該工作:

// MVC uses Form field 'dateofAction' to set parameter 'dateofAction'.
[HttpPost]
ActionResult Index(DateTime dateofAction) { ... }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM