2015-10-14 37 views
2

我填充一個ListView.Items數組:自動地通過調用建立從ListView控件的子項

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

我後來想獲得的所有fullname值的string[]。顯然,這在使用for循環的普通C風格代碼中很簡單,但我想知道C#語言特性是否允許使用lambda表達式更簡潔地完成此操作?

回答

2

由於項目是按順序添加的。第二子項是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; 
} 
+1

得愛C#,真的。 –