LINQ查询有一个小问题。

基本上,我有两个列表,其中填充了日期。

List<DateTime> start = GetListOfStartDates();
List<DateTime> end = GetListOfEndDates();
DateTime date = new DateTime(2012, 1, 1);


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

(start <= date && end >= date)


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

起始索引将始终匹配结束索引,start[7]将始终匹配end[7]。我正在尝试将mysql between-查询转换为LINQ。因此,我正在寻找给定的“日期”是否在任何起始-结束对之内。

最佳答案

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

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;
}

10-07 19:54
查看更多