Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在linq中使用查询日期时间?_C#_Asp.net Mvc_Linq - Fatal编程技术网

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.Day
10
假设是什么?什么是“
TimeEnd
将要完成”的条件?我不明白你想要达到什么条件。@CarlosM。你正在寻找一个DbFunctions类,它可以让你通过实体比较日期,并且可以正确地转换为sqlOh damn,它将回答相同的问题。明白了!谢谢你的回答和建议还有一个问题,如果我不能将
日期时间
int
进行比较,我怎么能关于我的
TimeEnd
将要完成的查询,在您给我的示例中,您使用
OtherDate
,但是我如何获得这个值,我查看函数
DateTime.Now.Day
10
假设是什么?什么条件是“
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);