首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与日期列表进行比较

问与日期列表进行比较
EN

Stack Overflow用户
提问于 2012-08-08 20:54:16
回答 3查看 168关注 0票数 1

在LINQ查询方面有一个小问题。

基本上我有两个列表,都是日期。

代码语言:javascript
复制
List<DateTime> start = GetListOfStartDates();
List<DateTime> end = GetListOfEndDates();
DateTime date = new DateTime(2012, 1, 1);

如何执行LINQ查询,将日期与开始日期和结束日期进行比较,基本上是这样的:

代码语言:javascript
复制
(start <= date && end >= date)

显然,我知道它们是列表,所以这不起作用,我如何将单个日期与两个日期列表进行比较?基本上就是在一组日期之间做一个转换。

起始索引将始终与结束索引匹配,start[7]将始终与end[7]匹配。我正在尝试把mysql between-query变成LINQ。因此,我正在寻找给定的“日期”是否在任何开始-结束对内。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-08-08 21:05:45

假设我正确地解释了您的问题(参见上面的注释),我认为您最好将其作为for循环而不是LINQ查询来执行。我会这样做:

代码语言:javascript
复制
public bool DateFallsInRange(IEnumerable<DateTime> startDates, IEnumerable<DateTime> endDates)
{
    for (int index = 0; index < startDates.Count; index++)
    {
        if ((startDates[index] <= compareDate) && (compareDate <= endDates[index])) return true;
    }
    return false;
}
票数 2
EN

Stack Overflow用户

发布于 2012-08-08 21:06:23

对OP目标的另一种解释:

代码语言:javascript
复制
bool b = start.Zip(end, (x, y) => new { Start = x, End = y })
              .Any(z => z.Start <= date && z.End >= date);

或者您也可以使用All(),这取决于您的逻辑。

票数 3
EN

Stack Overflow用户

发布于 2012-08-08 21:05:08

起始列表索引和结束列表索引必须相同?示例:

代码语言:javascript
复制
start|end
[0]1940|1950
[1]1890|1930

1931年的日期应该过去,因为1890<1931<1950?或者因为1931<1940和1931>1930而不应该通过?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11864980

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档