You can directly call a stored procedure with ExecuteQuery by passing the stored procedure name as follows:
result = dc.ExecuteQuery(Of T)(storedProcedureName)
But if your stored procedure has parameters, you need to pass a SQL statement that executes your stored procedure with replacements ({0}) for the parameters. The parameter list in this method is the list of parameters for the replacements. Generalized code would then look something like this:
Dim queryString As String = "Exec " & storedProcedureName
For i As Integer = 0 To arrParam.Count - 1
queryString &= " {" & i & "},"
Next
queryString = queryString.TrimEnd(","c)
result = dc.ExecuteQuery(Of T)(queryString, arrParam)
In the above code, the resulting queryString would look something like this:
"Exec RetrieveCustomerById {0}"
If you want to pass the parameters by name and not order, you can modify the above code to generate a queryString that looks like this:
"Exec RetrieveCustomerById CustomerId = {0}"