从ListView子项自动构建数组

本文关键字:构建 数组 ListView | 更新日期: 2023-09-27 18:17:37

我正在通过调用

填充ListView.Items:
for(...)
{
  view.Items.Add(new ListViewItem(new [] { nickname, fullname } ));
}

我后来想得到所有fullname值的string[]。显然,这是琐碎的做在正常的C风格的代码与for循环,但我想知道如果c#语言功能允许这做得更整齐地使用lambda等?

从ListView子项自动构建数组

因为项目是按顺序添加的。第二个子项是fullname

string[] fullnames = view.Items.OfType<ListViewItem>().Select(x => x.SubItems[1].Text).ToArray();

注意x.SubItems[1]的类型为ListViewSubItem。使用Text属性获取字符串值

您也可以使用匿名类型获得昵称和全名。

var allnames =
    listView1.Items.OfType<ListViewItem>()
        .Select(x => new {NickName = x.SubItems[0], FullName = x.SubItems[1]})
        .ToArray();
// usage
foreach(var n in allnames)
{
     string nickname = n.NickName;
     string fullname = n.FullName;
}