C# 如何在linq中使用查询日期时间?
我有一个数据库,其中有C# 如何在linq中使用查询日期时间?,c#,asp.net-mvc,linq,C#,Asp.net Mvc,Linq,我有一个数据库,其中有TimeStart和TimeEnd,所以我只想获取StudentName值,这些值是在几天内完成的。因此,每个学生姓名都有TimeStart和TimeEnd 视图模型: public List<SelectListItem> DurationDays { set; get; } public int SelectedDurationDays { set; get; } 如您所见,我使用SelectList项创建一个新的TimeStart和Tim
TimeStart
和TimeEnd
,所以我只想获取StudentName
值,这些值是在几天内完成的。因此,每个学生姓名都有TimeStart
和TimeEnd
视图模型:
public List<SelectListItem> DurationDays { set; get; }
public int SelectedDurationDays { set; get; }
如您所见,我使用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 studentsEnd = db.MyModelList.Where(x => x.StudentName == model.StudentName)
.Select(x => x.TimeEnd <= 10);
if (studentsEnd <= 10)
{
//Alert logic
}
var studentsEnd=db.MyModelList.Where(x=>x.StudentName==model.StudentName)
.Select(x=>x.TimeEnd您的LINQ是错误的,因为您没有使用DateTime
执行任何where
子句
在您当前的LINQ中,它可以在SQL中转换为如下内容:
SELECT (timeEnd <= 10) FROM MyModelList WHERE StudentName = ~variable~
此外,您正在将DateTime
与int
值进行比较,这没有任何意义。您只能将DateTimes
与DateTimes
进行比较
如果您不熟悉LINQ语法查询数据库,我建议您使用。您的LINQ是错误的,因为您没有使用DateTime
执行任何where
子句
在您当前的LINQ中,它可以在SQL中转换为如下内容:
SELECT (timeEnd <= 10) FROM MyModelList WHERE StudentName = ~variable~
此外,您正在将DateTime
与int
值进行比较,这没有任何意义。您只能将DateTimes
与DateTimes
进行比较
如果您不熟悉LINQ语法查询数据库,我建议您使用。到底是什么错误或问题?尝试显示值x.TimeEnd
您得到了什么?这与10
相比如何?您无法比较DateTime
和int
问题是我找不到获取t名称的方法时间结束的学生,我如何进行此查询?错误或问题到底是什么?尝试显示值x.TimeEnd
你得到了什么?这与10
相比如何?你无法比较DateTime
和int
问题是我找不到获取时间结束的学生姓名的方法结束就是结束,我该怎么做这个查询?哦,该死,我也会回答同样的问题。明白了!谢谢你的回答和建议还有一个问题,如果我不能将DateTime
与int
进行比较,我该如何对我的查询说我的TimeEnd
将要完成,在你给我的例子中,你使用OtherDate
,但我该怎么做呢t这个值,我看一下函数DateTime.Now.Day10
假设是什么?什么是“TimeEnd
将要完成”的条件?我不明白你想要达到什么条件。@CarlosM。你正在寻找一个DbFunctions类,它可以让你通过实体比较日期,并且可以正确地转换为sqlOh damn,它将回答相同的问题。明白了!谢谢你的回答和建议还有一个问题,如果我不能将日期时间
与int
进行比较,我怎么能关于我的TimeEnd
将要完成的查询,在您给我的示例中,您使用OtherDate
,但是我如何获得这个值,我查看函数DateTime.Now.Day10
假设是什么?什么条件是“TimeEnd
将要完成”?我不明白您想要达到什么条件。@CarlosM。您正在寻找的DbFunctions类将允许您通过实体比较日期,并将正确转换为sql
SELECT (timeEnd <= 10) FROM MyModelList WHERE StudentName = ~variable~
var studentsEnd = db.MyModelList.Where(x => x.StudentName == model.StudentName
&& x.TimeEnd <= otherDate);