【问题标题】:If From & To date is same record not filtering LINQ如果 From & To date 是相同的记录,则不过滤 LINQ
【发布时间】:2018-11-15 07:50:50
【问题描述】:

我正在使用Where 子句根据Dates 过滤记录,但它不起作用。 FromTo 日期相同,并且一条记录出现在同一日期内,但获取消除。

tod​​ate {11/6/2018 12:00:00 AM} //调试时

if (toDate != "0")
{
    var todate = DateTime.Parse(toDate).Date;
    query = query.Where(x => x.CreatedDate.Date <= todate);
}
var homework = query.Select(x => new StudentHomework
{
    HomeworkId = x.HomeworkID,
    CreatedDate = x.CreatedDate
}).OrderByDescending(i => i.CreatedDate).Skip(pageLong * recordLong - recordLong).Take(recordLong);
return homework.Any()
    ? Request.CreateResponse(HttpStatusCode.OK, homework)
    : Request.CreateResponse(HttpStatusCode.NoContent);

在 VS 中调试时从 db 向控制器发送一条记录

query 显示0 记录,并且在 ResulView 中收到以下消息

Message = "LINQ 不支持指定的类型成员 'Date' 到实体。只有初始化器、实体成员和实体导航 支持属性。

如果我在我的移动应用程序中删除过滤器json,结果是这样的

"HomeworkId": 1400,
"ClassName": "Class 1",
"SectionName": "N/A",
"SubjectName": "Mathematics",
"IsAnswered": false,
"CreatedDate": "2018-11-06T00:00:00",

【问题讨论】:

  • 毫秒是多少?可能他们在两个日期是不同的。
  • 这是什么数据库,查询在sql中翻译成什么,显然这将是您检查的第一件事对吗?
  • 查询对象是什么类型的引用?在末尾添加 ToList()。可能工作
  • 实际上不清楚你在问什么,或者你得到了什么结果
  • 您说“结果有一条记录,在 VS 中调试控制器时”,但后来结果是 0。你能说明你在哪里使用这个结果吗?如果这是控制器的一部分,则可能有助于将操作方法​​的其余部分发布到您返回实际操作结果的位置

标签: c# asp.net .net linq class-library


【解决方案1】:

首先,通过提出令人困惑的问题来浪费每个人的时间感到很愚蠢。这里的问题是这条线的.Date

query = query.Where(x => x.CreatedDate.Date <= todate);

在 LINQ to Entities 中,我不应该有 .Date,并且它不允许抛出 Exception。删除后一切正常。我有 try catch 块,但控制没有跳到它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-24
    • 1970-01-01
    • 1970-01-01
    • 2021-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多