我如何將ListView.Items
投射到List<string>
?將ListView Items列出來<string>?
這是我的嘗試:
List<string> list = lvFiles.Items.Cast<string>().ToList();
但我收到此錯誤:
Unable to cast object of type 'System.Windows.Forms.ListViewItem' to type 'System.String'.
我如何將ListView.Items
投射到List<string>
?將ListView Items列出來<string>?
這是我的嘗試:
List<string> list = lvFiles.Items.Cast<string>().ToList();
但我收到此錯誤:
Unable to cast object of type 'System.Windows.Forms.ListViewItem' to type 'System.String'.
一個ListViewItemCollection
正是這聽起來像 - ListViewItem
元素的集合。這是而不是字符串的集合。您的代碼在執行時失敗,出於同樣的原因,該代碼會在編譯時失敗:如果你想串,每個從ListViewItem
的Text
財產採取的列表
ListViewItem item = lvFiles.Items[0];
string text = (string) item; // Invalid cast!
,你可以做這很容易:
List<string> list = lvFiles.Items.Cast<ListViewItem>()
.Select(item => item.Text)
.ToList();
的Cast
方法本質上嘗試執行盒/拆箱,所以如果項目會失敗在列表中不是字符串。試試這個:
List<string> list = lvFiles.Items.Cast<ListViewItem>()
.Select(x => x.ToString()).ToList();
或者這
List<string> list = lvFiles.Items.Cast<ListViewItem>()
.Select(x => x.Text).ToList();
不會將您的第一個例子給你一個列表,其中的每一個元素是字符串「System.Windows.Forms的。 ListViewItem「? –
看起來它會給「ListViewItem:{text here}」 – Blorgbeard
@AdamV我不確定我的頭頂是什麼ListViewItem.ToString將返回(這就是爲什麼我給了備用解決方案)。 'ListViewItem'沒有[覆蓋'ToString'](http://msdn.microsoft.com/en-us/library/9syath98.aspx),所以我認爲它做的不僅僅是返回它自己的類型名稱。 –
嘗試是這樣的
List<string> list = lvFiles.Items.Cast<ListViewItem>().Select(x=> x.ToString()).ToList();
@Downvoter不要忘記發表評論 –
試試這個使用Select
方法:
的列表文本:
List<string> listText = lvFiles.Items.Select(item => item.Text).ToList();
的列表值:
List<string> listValues = lvFiles.Items.Select(item => item.Value).ToList();
或者,也許,對於:
Dictionary<string, string> files = lvFiles.Items.ToDictionary(key => key.Value, item => item.Text);
爲什麼我只能看到文件名而不是整個路徑? – user2214609
@ user2214609:我不知道,因爲我們甚至不知道'ListView'包含文件名。這聽起來像你應該問,作爲一個單獨的問題 - 在ListViewItem中填充文件名的Text屬性的內容與將ListViewItem值的集合轉換爲「列表'。 –
如果我沒有Cast或任何LINQ函數,我該怎麼辦? (WinForm項目) – 2015-11-28 14:37:49