Thanks JM. Elegant solution from you as usual Here is my final working function

Code:
Public Function GetEventsByEventType(ByVal EventType As List(Of Integer), ByVal DayInterval As Integer) As DataTable
            Dim cmd As MySqlCommand = New MySqlCommand

            Using con As New MySqlConnection(strCon)

                Dim query As New StringBuilder("SELECT ID,Activity,Teams,Venue,Timing,Eventdate FROM tblcal WHERE ((EventDate >= CURDATE()) AND (EventDate <= DATE_ADD(CURDATE(), INTERVAL ?DayInterval DAY)))")

                Select Case EventType.Count
                    Case 0
                        query.Append(" WHERE EventType = ?EventType")
                        cmd.Parameters.AddWithValue("?EventType", EventType.Item(0))

                    Case Is > 0

                        query.Append(" AND EventType IN (")

                        Dim paramName As String

                        For index As Integer = 0 To EventType.Count - 1 Step 1
                            paramName = "?EventType" & index

                            If index > 0 Then
                                query.Append(", ")
                            End If

                            query.Append(paramName)
                            cmd.Parameters.AddWithValue(paramName, EventType.Item(index))
                        Next index

                        query.Append(")")

                End Select

                cmd.Parameters.AddWithValue("?DayInterval", DayInterval)

                cmd.CommandText = query.ToString
                cmd.Connection = con

                con.Open()

                Dim reader As MySqlDataReader = cmd.ExecuteReader

                _data.Load(reader)

                con.Close()
                reader.Close()
                cmd.Dispose()

                Return _data

            End Using

        End Function