如何从SQL Server数据库获取一个简短的DateTime并使用Linq c#与DateTime.Now进行比较#

时间:2018-02-13 10:02:34

标签: c# linq datetime linq-to-entities

我的表格中包含dates date数据类型的select * from tbl_Attendance where Dates = '2018/2/12' 列,其格式为短日期' 2018/2/12'。

现在我想在C#中使用Linq查询检索日期。

这是我在SQL Server上运行的查询,它返回一些行:

var q = (from a in context.tbl_Attendance
         where a.ID.Value.CompareTo(Iden) < 0 && a.Dates.Value.CompareTo(DateTime.Now) < 0
         select a).FirstOrDefault();

但是,如果我尝试运行这些查询,它将返回null或&#34;方法无法转换为商店表达式&#34;错误。

只有以下查询返回了正确的ID,但日期不正确。

var q = (from a in context.tbl_Attendance
         where a.Dates == DateTime.Now
         select a).FirstOrDefault();

和:

var q = (from a in context.tbl_Attendance
         where a.Dates.Value.ToShortDateString() == DateTime.Now.ToShortDateString()                                               
         select a).FirstOrDefault();

attendance = context.tbl_Attendance.Where(d => d.ID == row.xID && d.Dates == DateTime.Now).FirstOrDefault();

最后我也尝试过:

Dim file_name As New ArrayList
' find the last row with values
Dim Lr As Integer = xlworksheet1.Cells(xlworksheet1.Rows.Count, 1).End(Excel.XlDirection.xlUp).Row

' loop trough all cells in column 1 (A)
For i = 1 To Lr
    file_name.Add(xlworksheet1.Cells(i, 1).value)
Next

Console.WriteLine(file_name)
For Each Name1 In file_name
    Console.WriteLine(Name1)
Next

1 个答案:

答案 0 :(得分:2)

  1. 如果您想将日期与其他日期进行比较,则不必使用DateTime.Now,因为它还会比较时间部分。请改用DateTime.Today

  2. 错误

  3.   

    方法无法转换为商店表达式

    因为DateTime.Now.ToShortDateString()CompareTo()无法转换为SQL查询而出现。

    我的建议:首先声明变量,为其赋值并在第二步中查询数据库。

    代码:

    DateTime myDate = DateTime.Today; // or DateTime.Parse("2018/2/12")
    var result = (from a in context.tbl_Attendance
             where a.Dates == myDate 
             select a).FirstOrDefault();