我使用xpath从xml文件填充了一个排序的日期列表(以dd/mm/yyyy格式存储为字符串).
但是,当查询列表以查看列表中是否存在日期时,我总是得到否定结果(即不存在),即使我有查询字符串的硬编码以匹配列表中的日期.
但是,当对包含查询字符串的索引进行字符串比较时,我得到0表示字符串是相同的.
什么可以导致这种奇怪的行为?
这里要求的是代码
假期包括:
while (iter.MoveNext()) { XPathNavigator nav2 = iter.Current; XPathNodeIterator iter2 = nav2.SelectDescendants("date", "", false); while (iter2.MoveNext()) { date = iter2.Current.ToString(); holidays.Add(date); } } return holidays;
搜索是:
holidays = list.getHolidays(); if(holidays.BinarySearch(DateTime.Now.ToShortDateString()) > 0)
返回以下XML:
01/01/2009 25/02/2009 10/04/2009 13/04/2009 04/05/2009 25/05/2009 31/08/2009 25/12/2009 28/12/2009
casperOne.. 10
我认为它与字符串的格式有关.您的列表按日,月,年排序,这是不正确的.
您需要像这样格式化字符串:
YYYY/MM/DD
然后对列表进行排序,您的搜索应该有效.
如果这些是日期(如DateTime
),那么列表将正确排序,但由于它们是字符串,并且您的格式不支持基于字符串的自然属性进行排序,因此排序顺序全部搞砸了.
我认为它与字符串的格式有关.您的列表按日,月,年排序,这是不正确的.
您需要像这样格式化字符串:
YYYY/MM/DD
然后对列表进行排序,您的搜索应该有效.
如果这些是日期(如DateTime
),那么列表将正确排序,但由于它们是字符串,并且您的格式不支持基于字符串的自然属性进行排序,因此排序顺序全部搞砸了.