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也可以。谢谢