C# 在通用列表中筛选日期

C# 在通用列表中筛选日期,c#,.net,C#,.net,我有一个定义如下的类 public class Risk { public DateTime RiskDate { get; set;} public string RiskStatus { get; set;} } 我有一个风险清单如下 风险日期风险状态 2001年10月10日偏高 15/10/2001低 2001年10月21日偏高 2001年10月28日低 2001年11月5日偏高 08/11/2001低 我想从给定日期的列表中查找日期范围。例如,如果我的输入日期是17

我有一个定义如下的类

public class Risk
{
   public DateTime RiskDate { get; set;}
   public string RiskStatus { get; set;}    
}
我有一个风险清单如下

风险日期风险状态 2001年10月10日偏高

15/10/2001低

2001年10月21日偏高

2001年10月28日低

2001年11月5日偏高

08/11/2001低

我想从给定日期的列表中查找日期范围。例如,如果我的输入日期是17/10/2001,那么我想从列表中提取15/10/2001和21/10/2001。如果我的输入日期与列表完全匹配,例如28/10/2001,那么我只想从列表中提取该日期

我希望有人能给我一些建议

谢谢

这很有效:

var lower =
    from d in dates
    where d <= inputDate
    orderby d descending
    select d;

var upper =
    from d in dates
    where d >= inputDate
    orderby d
    select d;

var range = lower.Take(1)
    .Concat(upper.Take(1))
    .Distinct();

到目前为止你尝试了什么?您想用LINQ还是SQL来实现这一点?除非你找到一个精确的匹配项,否则你基本上应该得到下限的最大值和上限的最小值。我所做的是对列表进行排序,并使用循环找到等于或小于日期的索引。然后找到范围的索引。但我可能希望在LINQ中实现它。实现Risk类的IComparable接口可以使上述代码按预期工作。Thanks@AlanB-因为您只处理日期,我想您也可以从风险类别中选择数据属性,但是实现IComparable也可以。谢谢