我的软件设计用于加密和解密文件。用户将要处理的文件加载到ListView控件中。在控件中,每个项都是带有一个子项的文件路径,即进程的类型(ENCRYPT或DECRYPT(。
我需要得到一个包含"ENCRYPT"子项的所有ITEMS(文件路径(的列表,最好是使用LINQ。目前,我的代码如下:
Dim enclist As New ArrayList()
For i As Int32 = 0 To (lvwLoad.Items.Count - 1)
If lvwLoad.Items(i).SubItems(1).Text = "ENCRYPT" Then
enclist.Add(lvwLoad.Items.Item(i).Text)
count += 1
End If
Next
我试过这个:
Dim list As IEnumerable(Of String) = From item In lvwLoad.Items
Where item.SubItems(1).Text = "ENCRYPT"
但是此语句无法访问SubItems()
数组。我知道我可能错过了一些简单的东西,但我想不通。
编辑:我知道我能做到:
Dim enclist As New List(Of String)
For Each item As ListViewItem In lvwLoad.Items
If item.SubItems(1).Text = "ENCRYPT" Then
enclist.Add(item.Text)
End If
Next
但我真的很想知道如何用LINQ做到这一点。
尝试下面的代码,您需要将项目强制转换为ListViewItem
,以便访问SubItems
Dim list = From item In lvwLoad.Items.Cast(Of ListViewItem) () _
Where item.SubItems(1).Text = "ENCRYPT"
Select item.Text
return lvwLoad.Items.Where(item => item.SubItems(1).Text = "ENCRYPT").Select(s => s.Text);
Dim list As IEnumerable(Of String) = From item In lvwLoad.Items
Where item.SubItems(1).Text = "ENCRYPT"
Select item.Text
我希望这会有所帮助。