从ListView子项自动构建数组

时间:2015-10-14 16:29:49

标签: c# lambda .net-4.0

我通过调用:

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

我稍后想要获得所有string[]值的fullname。显然,在带有for循环的普通C风格代码中,这是微不足道的,但我想知道C#语言特性是否允许使用lambdas等更好地完成这一操作?

1 个答案:

答案 0 :(得分:2)

由于按订单添加了商品。第二个SubItem是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;
}