Questo è davvero un duplicato dei link che hai postato. Invece di provare ad analizzare un elenco di valori, passa un parametro con valori di tabella.
Per prima cosa creare il tipo di parametro nel database (solo una volta).
CREATE TYPE [dbo].[IdList] AS TABLE(
[Id] int NULL
);
Quindi crea una procedura che accetti questo parametro:
CREATE PROCEDURE [dbo].[GetWorkspaceMapDetailsForUserByGroups]
@workspaceID int,
@groupIds IdList READONLY
AS
BEGIN
SELECT
m.*
FROM GeoAppMapDef m
inner join @groupIds on [email protected]
WHERE
m.workspaceID = @workspaceID
and m.IsDeleted = 0
END
Sul lato client, crea una DataTable con una singola colonna di tipo int chiamata Id
, compilalo con gli ID che desideri, quindi utilizzalo come valore di @groupIds
parametro
var table = new DataTable();
table.Columns.Add("Id", typeof(int));
for (int i = 0; i < 10; i++)
table.Rows.Add(i);
var pList = new SqlParameter("@groupIds", SqlDbType.Structured);
pList.TypeName = "dbo.IdList";
pList.Value = table;
L'ho copiato dalla domanda duplicata con alcune modifiche.