簡體   English   中英

如何在linq中使用查詢日期時間?

[英]How to use query datetimes with linq?

我的數據庫中有TimeStartTimeEnd ,因此我只想獲取StudentName值,這些值要幾天才能完成。 所以每個StudentName都有TimeStartTimeEnd

ViewModel:

    public List<SelectListItem> DurationDays { set; get; }
    public int SelectedDurationDays { set; get; }

模型:

 [Key]
    public int MyModelId { get; set; }
    public String StudentName { get; set; }

    [DisplayFormat(DataFormatString = "{0:d}", ApplyFormatInEditMode = true)]
    public DateTime TimeStart{ get; set; }

    [DisplayFormat(DataFormatString = "{0:d}", ApplyFormatInEditMode = true)]
    public DateTime TimeEnd{ get; set; }

如您所見,我做了一個SelectList項來創建新的TimeStart和TimeEnd,這是我的邏輯:

創建獲取:

  public async Task<ActionResult> Index(StudentsViewModel model)
    {
   var vm = new myViewModel
        {
            DurationDays = new List<SelectListItem>()

            {
                new SelectListItem {Value = "1", Text = "1 year"},
                new SelectListItem {Value = "2", Text = "2 years"},
            }}

建立訊息

 var endDate = DateTime.Now.AddYears(model.SelectedDurationDays);

所以我嘗試檢查即將結束的值是:

     var studentsEnd = db.MyModelList.Where(x => x.StudentName == model.StudentName)
            .Select(x => x.TimeEnd <= 10);
         if (studentsEnd <= 10)
        {
            //Alert logic
        }

我的查詢錯了嗎? 我只想選擇靠近TimeEnd的StudentName

您的LINQ是錯誤的,因為您沒有使用DateTime進行任何where子句。

在您當前的LINQ中,可以在SQL中將其轉換為如下形式:

SELECT (timeEnd <= 10) FROM MyModelList WHERE StudentName = ~variable~

您也應該將DateTime條件放入.Where()子句中,如下所示:

 var studentsEnd = db.MyModelList.Where(x => x.StudentName == model.StudentName 
                   && x.TimeEnd <= otherDate);

另外,您正在將DateTime與一個int值進行比較,這沒有任何意義。 您只能將DateTimesDateTimes進行比較。

如果您不熟悉LINQ語法查詢數據庫,建議您使用LINQPad

暫無
暫無

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

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