【问题标题】:How to convert Sql Datetime query into Linq如何将 Sql 日期时间查询转换为 Linq
【发布时间】:2016-10-21 06:59:39
【问题描述】:
select * from Employees where DataofJoin ='2005-01-01 00:00:00.000'

我把这个 Linq 查询写成

public JsonResult Dif() 
{
    var ss = Convert.ToDateTime("2001-01-01 00:00:00.000");
    var x = (from n in db.Employees
                where n.DataofBirth == ss
                select n).First();

    return new JsonResult { JsonRequestBehavior = JsonRequestBehavior.AllowGet };
}

但它抛出以下错误:

"An exception of type 'System.InvalidOperationException' occurred in System.Core.dll 
but was not handled in user code"

【问题讨论】:

  • 请向我们展示您的堆栈跟踪
  • 什么是 StackTrce
  • 题主完全误导,与Sql Datetime查询转换无关
  • 我不明白你的代码应该做什么。您实例化一个 DataTime 对象,进行 linq 查询,将结果存储在 x 中并返回一个新的 JsonResult。但是您永远不会将 x 的值分配给任何东西。

标签: c# linq model-view-controller


【解决方案1】:

据我所知,这个问题是因为试图从空对象中获取项目。

因为您正在调用.First(),并且查询返回了一个空结果。因此,如果您对空对象执行 obj.First(),它会引发异常。使用 obj.FirstOrDefault() 来避免异常。

如果 Linq 没有返回数据是一个问题,那么使用 Sql Profiler 检查调用了什么查询,或者相应地更改日期过滤器。

为避免错误使用-

    var x = (from n in db.Employees
             where n.DataofBirth == ss
             select n).FirstOrDefault();

更新

为了获得正确的日期,请执行以下操作。

var ss = new DateTime (2005,01,01,0,0,0); //use this date in linq query

希望对你有所帮助。

【讨论】:

  • 这里为什么当我通过 sql 查询输入时 sql 采用 Null 值就像 select * from Employees where DataofJoin ='2005-01-01 00:00:00.000' 它给了我 Exeact ans
  • 因为日期的解释从 Linq 更改为 sql ,它不是你想要的那样。让我更新答案以帮助您。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-03-31
  • 2020-12-01
  • 1970-01-01
  • 2020-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多