字符串数组转为ListViewItemCollection

3

我该如何使用LINQ或转换方法一步将字符串数组添加到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个回答

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)

@DanielNeel:不行。Select需要一个类型为Func(Of String, TResult)的参数。New ListViewItem(x)ListViewItem类型。此外,x未定义。 - pescolino
哎呀,@pescolino你是对的。在发帖之前应该仔细看一下 - 删除我的评论以防混淆。 - Daniel Neel

2

看起来你需要使用'Items.Add'设置第一列,而使用'SubItems.AddRange'设置其余列。这是我用来完成此任务的代码:

string[] arr = "column1|column2|column3".Split('|');
ListView1.Items.Add(arr[0]).SubItems.AddRange(new string[] { arr[1], arr[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())))

谢谢,但是两个代码都不行,都会抛出异常...另外我要求的是一个字符串数组,而不是一个字符数组,我写的字符值只是为了举例,无论如何感谢。 - ElektroStudios

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)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接