Ab SQL Server 20008 können benutzerdefinierte Tabellentypen folgendermassen erstellt werden:

CREATE TYPE dbo.list_of_int AS TABLE (Id INT)

Es können auch Typen mit mehreren Spalten definiert werden, meistens wird jedoch nur eine Möglichkeit benötigt, eine Liste von Zahlen oder Strings an eine Stored Procedure zu übergeben.

Eine Stored Procedure könnte z.B. folgendermassen aussehen:

CREATE PROCEDURE GetSomeUsers
  @IdList list_of_int READONLY
AS
BEGIN
  SELECT * FROM [User] WHERE UserId IN (SELECT Id FROM @IdList)
END

Aufruf aus C#:


ctx.User.FromSql($"EXEC GetSomeUsers {idList}");

Es wird angenommen, dass User bereits als DbSet oder DbQuery definiert wurde.