C# C-winforms-以数组的形式获取listview中特定列的文本

C# C-winforms-以数组的形式获取listview中特定列的文本,c#,winforms,arrays,listview,C#,Winforms,Arrays,Listview,是否可以在不使用循环函数的情况下以数组的形式获取listview中特定列的文本值?假设我有一个包含2列和5000条记录的listview。我想要的是只获取第2列下的所有文本,但不使用循环。我知道我可以通过一个循环来实现这一点,但如果我有5000多条记录,这需要花费很多时间 有什么想法吗?不要将文本文件中的数据直接读取到列表视图中……将其存储在类似于ArrayList的数据结构中,这样可以保持插入元素的顺序 我感觉到了你的痛苦,我个人也体验过ListViewItems收集的速度有多慢 您可以在不使

是否可以在不使用循环函数的情况下以数组的形式获取listview中特定列的文本值?假设我有一个包含2列和5000条记录的listview。我想要的是只获取第2列下的所有文本,但不使用循环。我知道我可以通过一个循环来实现这一点,但如果我有5000多条记录,这需要花费很多时间


有什么想法吗?

不要将文本文件中的数据直接读取到列表视图中……将其存储在类似于ArrayList的数据结构中,这样可以保持插入元素的顺序

我感觉到了你的痛苦,我个人也体验过ListViewItems收集的速度有多慢

您可以在不使用for循环的情况下访问ListView的第二列,如下所示:

string[] column1 = this.listView1.Items.Cast<ListViewItem>().Select(item => item.SubItems[1].Text).ToArray();
但这并不比for循环快多少。事实上,它有点慢!其他技巧,如尝试使用ListViewItemsCollection.CopyTo也会失败

ListView的一个主要问题是,当用作数据结构时,速度非常慢。属性ListView.Items看起来像一个数据结构,您可以像数据结构一样使用它,但可以以任何方式对其进行切片:

数据输入,但输出不快。 因此,如果您遵循alexD的建议,您将发现真实的数据结构在数量级上优于ListViewItemCollection。这个故事的寓意是,如果您想快速查询ListViewItemCollection中的数据,除了在ListView之外保留一个快速副本,别无选择。实际上,任何数据结构都可以,例如

字符串[][] 字符串[,] 单子 名单甚至 名单。
这些都可以存储与两列ListView相同的数据,与使用ListView作为数据结构相比,它们的存储速度会非常快。这很不方便,但这是我们必须为速度付出的代价。

控件中数据的来源是什么?伙计,当程序运行时,我只从文本文件中读取一次数据。。。所以这不是问题所在。是的,但是如果您先将其读入数据结构,那么您就不必担心以后将列从ListView中拉出。您已经从getgo获得了字符串数组。感谢您清除此。。我想有个好办法。。无论如何,我将使用另一个线程来完成整个循环。。我认为这是最简单的方法..这是一个好主意,但不幸的是,您不能使用其他线程来加快速度,因为不允许后台线程访问WinForms用户界面对象,如ListView。我只将ListView控件中的ListViewItems复制到数组中。。然后将该数组传递给新线程。。就这样。。刚刚实现了它,它真的像一个魅力: