【问题标题】:Compare DateTime Lists, c# linq比较日期时间列表,c#linq
【发布时间】:2014-03-10 16:23:33
【问题描述】:

我有一个 C# 列表

List<Dates>

public class Dates
{
    public DateTime Start {get; set;}
    public DateTime End {get; set;}
}

在列表中:

开始 - 结束

  1. 2014-03-17 09:00:00 - 2014-03-17 10:00:00
  2. 2014-03-17 10:59:59 - 2014-03-17 11:44:59

如何检查我的 startToCheck 是否在 Start 之间,与 endToCheck 到 End 到该列表相同?

例如:

startToCheck = 2014-03-17 11:00:00
endToCheck = 2014-03-17 12:00:00

显然,我的 startToCheck 在 List nr2 中,但没有找到。

我试过了

if (Start <= startToCheck && End >= endToCheck)

但是不工作... 请帮忙?

谢谢

【问题讨论】:

  • “不工作”是什么意思?会爆炸吗?
  • 您想知道您的日期范围是否与任何其他日期范围重叠吗?您想知道它是否完全包含在给定日期范围之一内吗?
  • 您当前的输出是什么,您的预期输出是什么? “不工作”并不能真正告诉我们任何事情。
  • "如何检查我的 startToCheck 是否在 Start 之间,与 endToCheck 到 End 到该列表相同?"语法问题使这句话很难理解。能解释清楚点吗?
  • 对不起我的语法...

标签: c# linq datetime compare


【解决方案1】:

听起来您正在尝试确定列表中的任何 Dates 值是否在该范围内。如果是这样,您正在寻找 Any 方法

if (theList.Any(x => x.Start <= endToCheck && x.End >= startToCheck) { 
  ...
}

【讨论】:

    【解决方案2】:

    如果要检测所有重叠:

    yourList.Where(x=> x.Start <= endToCheck && x.End >= startToCheck)
    

    【讨论】:

      猜你喜欢
      • 2012-02-07
      • 1970-01-01
      • 1970-01-01
      • 2012-01-20
      • 2018-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-04
      相关资源
      最近更新 更多