我有一个带CheckedListBox的表单,用户可以在其中选择多个选项(它正在筛选目录文件列表 - 筛选的文件出现在第二个列表框中)。在LINQ条件查询中使用“或”
如果我有选择的一组号码,我可以在这样的查询使用“或”:
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
感谢您的帮助, 安德鲁
我认为[Predicate Builder](http://www.albahari.com/nutshell/predicatebuilder.aspx)是你正在寻找的! – Flowerking 2012-04-24 12:25:18