Dette er virkelig en kopi af de links, du har postet. I stedet for at forsøge at parse en liste med værdier, skal du sende en parameter med tabelværdi.
Opret først parameterens type i databasen (kun én gang).
CREATE TYPE [dbo].[IdList] AS TABLE(
[Id] int NULL
);
Opret derefter en procedure, der accepterer denne parameter:
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
På klientens side skal du oprette en datatabel med en enkelt int-type kolonne kaldet Id
, udfyld det med de ID'er, du ønsker, og brug det derefter som værdien af @groupIds
parameter
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;
Jeg har kopieret dette fra det duplikerede spørgsmål med nogle få ændringer.