[英]How to use query datetimes with linq?
我的數據庫中有TimeStart
和TimeEnd
,因此我只想獲取StudentName
值,這些值要幾天才能完成。 所以每個StudentName都有TimeStart
和TimeEnd
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
值進行比較,這沒有任何意義。 您只能將DateTimes
與DateTimes
進行比較。
如果您不熟悉LINQ語法查詢數據庫,建議您使用LINQPad
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.