繁体   English   中英

从数组列表中排序数据

[英]Sorting of data from array list

我有一个数组列表,由以下格式的数据组成

2011 年 8 月 12 日,2011 年 9 月 11 日

我使用下面的代码进行排序:

Array.Sort(fileNames, delegate(string first, string second)
{

  return DateTime.Compare(Convert.ToDateTime(first), Convert.ToDateTime(second));
});

我从上面的代码得到的结果是

2011 年 9 月 11 日,2011 年 8 月 12 日

排序后

您说您的数据是“字符串的数组列表”-您的意思是

List<string> 

或者

string[]

?

它对您实现代码的方式有所不同。 假设你有一个实际的数组,那么代码就很简单了,尽管没有我们想要的那么干净:

private void SortButton_Click(object sender, RoutedEventArgs e)
{
    ItemsListBox.ItemsSource = null;
    Array.Sort(items, delegate(string first, string second)
    {
        return DateTime.Compare(Convert.ToDateTime(first), Convert.ToDateTime(second));
    });
    ItemsListBox.ItemsSource = items;
}

但是,如果您正在处理一个名为“items”的 List<string>,那么这种方法将无法单独使用。 你必须处理一些事情才能做到这一点:

private void SortButton_Click(object sender, RoutedEventArgs e)
{
    ItemsListBox.ItemsSource = null;
    var arrayOfItems = items.ToArray<string>();
    Array.Sort(arrayOfItems, delegate(string first, string second)
    {
        return DateTime.Compare(Convert.ToDateTime(first), Convert.ToDateTime(second));
    });
    items = new List<string>(arrayOfItems);
    ItemsListBox.ItemsSource = items;
}

类似,但不同:) 由于排序发生在适当的位置,它实际上只是对数组进行排序,而不是我们使用的实际 List<string>。

现在 - 请注意之前清除 ItemsSource 和之后重置。 我玩了一会儿,但如果不执行这两个步骤,它就无法正常工作。 我认为这是数据绑定基础架构中某处的故障。 我尝试使用 string[]、List 和 ObservableCollection,但每次都必须清除并重置 ItemsSource 以使 ListBox 重新绘制。

您对 Convert.ToDateTime() 的评论对我来说似乎不是问题。 我也尝试过 DateTime.Parse() 并且效果也很好。 问题出在 ListBox.ItemsSource 的清除和重新分配中。

有谁知道为什么 ListBox 会这样? 我只是忘记了一些简单的事情吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM