vb.net - 如何使用 LINQ 获取具有特定子项的所有项?

标签 vb.net linq listviewitem

我的软件旨在加密和解密文件。用户将要处理的文件加载到 ListView 控件中。在控件中,每一项都是文件路径,其中包含一个子项、进程类型(ENCRYPT 或 DECRYPT)。

我需要获取具有“ENCRYPT”子项目的所有项目(文件路径)的列表,最好使用 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

关于vb.net - 如何使用 LINQ 获取具有特定子项的所有项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14407902/

相关文章:

vb.net - 在 VB.NET 的字典中查找元素

c# - 相当于休眠中的 ROW_NUMBER() 函数

c# - 在LINQ扩展方法中指定通用类型的原因

sql-server - Entity Framework - SkipWhile

.net - IsDouble 检查 Vb.net 中的字符串?

c# - HttpWebRequest 到 HttpClient post 请求

vb.net - LINQ to SQL 并使用 OR 子句连接两个表

android - 保持 ListView 的第一项固定并在该项目之后从数据库添加数据

Android:ListView 中的 HTML 链接 - 突出显示问题

c# - ListView 列是否有可显示的最大长度?