Dim IdList As New List(Of String)() From { "001", "002"} Dim NameList As New List(Of String)() From {"ライオン", "コアラ"} Dim DescLike As String = "*長い*" '-- 以下の問い合わせに相当-- ' ' ( [ID] IN ( '001', '002') ) ' AND ( [NAME] IN ('ライオン', 'コアラ') ) ' Dim Query1 = From row In MstDtTbl Where IdList.Contains(row.Field(Of String)("ID")) Where NameList.Contains(row.Field(Of String)("NAME")) Select NAME = row.Field(Of String)("NAME"), DESC = row.Field(Of String)("DESC") Dim conditions As New List(Of Predicate(Of DataRow))() conditions.Add(Function(row) IdList.Contains(row.Field(Of String)("ID"))) conditions.Add(Function(row) NameList.Contains(row.Field(Of String)("NAME"))) conditions.Add(Function(row) row.Field(Of String)("DESC") Like DescLike) '-- 以下の問い合わせに相当-- ' ' ( [ID] IN ( '001', '002') ) ' OR ( [NAME] IN ('ライオン', 'コアラ') ) ' OR ( [DESC] LIKE '%長い%' ) ' Dim Query2 = From row In MstDtTbl Where conditions.Any(Function(c) c(row)) Select NAME = row.Field(Of String)("NAME"), DESC = row.Field(Of String)("DESC")