【问题标题】:Get Next Meeting Date fails using Linq query使用 Linq 查询获取下一个会议日期失败
【发布时间】:2019-10-13 03:05:36
【问题描述】:

我需要从会议日期表中显示下一个会议日期。一旦某个日期作为当前日期过去,则应该显示下一个日期。我搜索了类似的例子,但没有运气:

2019 年 5 月 21 日

2019 年 7 月 11 日

2019 年 8 月 8 日

2019 年 9 月 12 日

2019 年 10 月 10 日

2019 年 11 月 14 日

2019 年 12 月 12 日

这里的 Linq 查询失败了。例如,在 2019 年 10 月 10 日之后,它不会返回任何内容,因为 2019 年 11 月 14 日实际上超过 1 个月。

var LinqResult = (from c in _context.MeetingSchedule
                 where c.MeetingDate.Date >= DateTime.Now.Date && c.MeetingDate.Date <= DateTime.Now.Date.AddMonths(1)
                  select new { c.Location, c.MeetingDate, c.MeetingTime }).ToArray();

if (LinqResult.Any())
{
  //SEND NEXT MEETING DATE BACK VIA VIEWSTATE
}

另外,我很确定在会议召开后的最后一个月(12 月)会发生一些奇怪的事情。 我正在尝试显示当前的下一次会议,并在当前会议结束后将其更改为下一次会议。将月份添加到 12 将创建一个不存在的月份编号 13。

【问题讨论】:

  • 在过滤掉已经发生的日期后按升序排列会议日程,然后抓住第一个。
  • 你可以把orderby c.MeetingDate.Date放在whereselect之间

标签: c# linq date-math


【解决方案1】:

您可以在过滤掉已经发生的日期后对会议日程进行升序排序,然后抓住第一个。

var LinqResult = (from c in _context.MeetingSchedule
                  where c.MeetingDate.Date >= DateTime.Now.Date
                  orderby c.MeetingDate.Date
                  select new { c.Location, c.MeetingDate, c.MeetingTime }).ToArray();

if (LinqResult.Any())
{
  //SEND NEXT MEETING DATE BACK VIA VIEWSTATE
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-26
    • 1970-01-01
    • 2021-07-20
    • 1970-01-01
    • 2019-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多