2

私のソフトウェアは、ファイルを暗号化および復号化するように設計されています。ユーザーは、処理するファイルをListViewコントロールにロードします。コントロールでは、各アイテムは、プロセスのタイプ(ENCRYPTまたはDECRYPT)という1つのサブアイテムを持つファイルパスです。

「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でこれを行う方法を知りたいです。

4

2 に答える 2

1
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

これがお役に立てば幸いです。

于 2013-01-18T22:06:31.690 に答える
1

ListViewItem以下のコードを試してください。アクセスできるようにアイテムをキャストする必要がありますSubItems

Dim list  = From item In lvwLoad.Items.Cast(Of ListViewItem) () _ 
                                     Where item.SubItems(1).Text = "ENCRYPT" 
                                     Select item.Text
于 2013-01-18T22:13:21.473 に答える