c# - 自动从 ListView 子项构建数组

标签 c# lambda .net-4.0

我通过调用填充 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/

相关文章:

c# - 从哪里开始学习 LINQ 最好?

c# - 如何路由 API 并使用查询字符串?

c# - Roslyn - 如何将变量声明语句插入脚本的开头(使用后)?

带有 lambda 和过滤器的 python 代码

c# - C# 中的无类型 lambda 演算

c# - ConcurrentDictionary<> 在单线程时的表现误区?

c# - 0 值的 System.Text.Encoding.Default.GetString(byte[]) 结果

C++11:可变的 lambda 似乎不会改变变量?

asp.net - 如何在 DataGrid 中的按钮上设置 CssClass

.net-4.0 - Workflow Foundation 4 的想法和经验