当前位置:  开发笔记 > 编程语言 > 正文

BinarySearch没有预期的结果

如何解决《BinarySearch没有预期的结果》经验,为你挑选了1个好方法。

我使用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),那么列表将正确排序,但由于它们是字符串,并且您的格式不支持基于字符串的自然属性进行排序,因此排序顺序全部搞砸了.



1> casperOne..:

我认为它与字符串的格式有关.您的列表按日,月,年排序,这是不正确的.

您需要像这样格式化字符串:

YYYY/MM/DD

然后对列表进行排序,您的搜索应该有效.

如果这些是日期(如DateTime),那么列表将正确排序,但由于它们是字符串,并且您的格式不支持基于字符串的自然属性进行排序,因此排序顺序全部搞砸了.

推荐阅读
乐韵答题
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有