ユーザーが複数のオプションを選択できる CheckedListBox を含むフォームがあります (ディレクトリ ファイルリストをフィルタリングしています - フィルタリングされたファイルは 2 番目のリストボックスに表示されます)。
一定数のオプションがある場合、次のようにクエリで「Or」を使用できます。
Dim query = From f As System.IO.FileInfo In StartList
Where f.Name.Contains("Romania")
Where f.Channel = "Channel1" Or f.Channel = "Channel2"
しかし、人は任意の数のオプションをクリックできる(または何もクリックできない)ため、これはできません。複数のサブクエリを作成してからユニオンを実行するなど、いくつかのことを試しましたが、機能しません。
これまでの私のコードは次のとおりです。
Dim Channels = ChannelListBox.CheckedItems
Dim query = From f As System.IO.FileInfo In StartList
Where f.Name.Contains("Romania")
If Channels.Count > 0 Then
Dim CurrentName As String = Channels(0).ToString
Dim Subquery = From g As System.IO.FileInfo In query
Where (g.Name.Contains(CurrentName))
For i = 1 To Channels.Count - 1
CurrentName = Channels(i).ToString
Dim Subquery2 = From h As System.IO.FileInfo In query
Where (h.Name.Contains(CurrentName))
Subquery = Subquery.Union(Subquery2)
Next i
FileListBox.DataSource = Subquery.ToList
Else
FileListBox.DataSource = query.ToList
End If
助けてくれてありがとう、アンドリュー