Como passar um parâmetro de valor de tabela

Estou tentando passar um parâmetro de valor de tabela para um procedimento armazenado, mas continuo recebendo uma exceção (veja abaixo

SqlCommand c = new SqlCommand("getPermittedUsers", myConn) { CommandType = CommandType.StoredProcedure };

c.Parameters.AddWithValue("@intNotifyingUserId", notifyingUserId);
c.Parameters.AddWithValue("@tSelectedPdfIds", sharedPdfs).SqlDbType = SqlDbType.Structured;

SqlDataReader dr = c.ExecuteReader();

O tipo é definido no servidor assim:

CREATE TYPE [dbo].[IdList] AS TABLE(
    [Id] [int] NOT NULL
)

Eu tentei passar sharedPdfs comoList<int> eIQueryable<int>, mas continue recebendo a seguinte exceção:

Object must implement IConvertible.

Alguém sabe o que estou fazendo de errado? A documentação implica que eu possa passar uma lista como TVP, mas não dá exemplo

Obrigado

questionAnswers(2)

yourAnswerToTheQuestion