我的日期范围是这样的,
string ActualReleaseDates ="7/8/2016, 7/9/2016, 7/11/2016,7/3/2016,7/10/2016,7/17/2016,7/24/2016,7/31/2016";
string NewsReleasedDate ="07/11/2016";
Run Code Online (Sandbox Code Playgroud)
我想检查NewsReleaseDate是否在ActualReleaseDates中
但是在下面的代码中它返回false.
if (ActualReleaseDates.Split(',').Contains(NewsReleasedDate.TrimStart(new Char[] { '0' })))
{
//some code here
}
Run Code Online (Sandbox Code Playgroud)
在直接的问题是,你的分裂后ActualReleaseDates的字符串,没有的条目"7/11/2016"......相反,还有的进入" 7/11/2016"......注意空格.
但更重要的是,NewsReleasedDate如果价值类似于"07/08/2016" ,那么仅仅修剪一开始就无济于事......您应该做的是将这些值作为日期而不是字符串处理:
ActualReleaseDates用逗号分割,然后以适当的格式解析每个值(在修剪空格之后)(我怀疑是M/d/yyyy这样),这样你就得到了List<DateTime>.NewsReleasedDate以适当的格式解析,我怀疑是MM/dd/yyyy,所以你得到了DateTime.(我个人建议使用Noda Time并解析LocalDate值,但我有偏见......)
从根本上说,您正在尝试查看日期列表中是否出现一个日期 ...因此请确保尽早将数据转换为最合适的数据.理想情况下,避免使用字符串为此不惜一切 ......我们不知道你的数据来的,但如果它在另一个代表开始了和被转换成文本,看看你能不能避免这种转换.