ListViewItemCollection的字符串数组

时间:2013-09-13 22:44:56

标签: .net arrays vb.net linq listview

如何使用LINQ或Casting方法将一个字符串数组一步添加到Listview中?

这是我尝试但不起作用的地方:

ListView1.Items.AddRange("a b c d e f".Split(" ").ToArray _
.Select(Function(x) New ListViewItem(x)))

更新:

另一次尝试,不起作用:

ListView1.Items.AddRange( _
    New ListView.ListViewItemCollection( _
    {"Value 1", "Value 2", "Value 3"} _
   .Select(Function(x) New ListViewItem(x))))

4 个答案:

答案 0 :(得分:4)

AddRange需要一个数组,但Select函数返回IEnumerable。所以你只需要在表达式的末尾添加ToArray。 由于Split返回一个字符串数组,因此无需在那里添加对ToArray的调用。

这将完成这项工作:

ListView1.Items.AddRange("a b c d e f".Split(" "c) _
                                      .Select(Function(x) New ListViewItem(x)) _
                                      .ToArray)

答案 1 :(得分:2)

您似乎必须使用'Items.Add'设置第一列,并使用'SubItems.AddRange'设置其余列。这是我用来完成的代码:

string[] arr = "column1|column2|column3".Split('|');
ListView1.Items.Add(arr[0]).SubItems.AddRange(new string[] { arr[1], arr[2] });

答案 2 :(得分:1)

ListView1.Items.AddRange("a b c d e f".Split(" ".ToCharArray()))

上面应该是正确的语法,以便将这些字符添加为列表

修改 想想我错过了ListViewItem集合

ListView1.Items.AddRange(new ListViewItem("a b c d e f".Split(" ".ToCharArray())))

答案 3 :(得分:0)

完成!

我希望这有助于其他人:

  ' Set the Array content
  Dim Items As String() = "ABC DEF GHI JKL".Split

  ' Add them in one step
  ListView1.Items.AddRange(Items.Select(Function(x) New ListViewItem(x)).ToArray)