我通过调用填充 ListView.Items
:
for(...)
{
view.Items.Add(new ListViewItem(new [] { nickname, fullname } ));
}
我稍后想获取所有fullname
值的string[]
。显然,这在带有 for 循环的普通 C 风格代码中是微不足道的,但我想知道 C# 语言功能是否允许使用 lambda 等更巧妙地完成此操作?
最佳答案
由于商品是按订单添加的。第二个子项是全名
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;
}
关于c# - 自动从 ListView 子项构建数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33130806/