ГДЕ В (массив идентификаторов)

Сначала вам понадобится функция .cs-file и sproc. Функция разделит ado.net ваши данные и вернет таблицу:

CREATE function IntegerCommaSplit(@ListofIds nvarchar(1000))
returns @rtn table (IntegerValue int)
AS
begin
While (Charindex(',',@ListofIds)>0)
Begin
    Insert Into @Rtn 
    Select ltrim(rtrim(Substring(@ListofIds,1,Charindex(',',@ListofIds)-1)))
    Set @ListofIds = Substring(@ListofIds,Charindex(',',@ListofIds)+len(','),len(@ListofIds))
end
Insert Into @Rtn 
    Select  ltrim(rtrim(@ListofIds))
return 
end

Затем sqlparameters вам понадобится sproc, чтобы mssql использовать это:

create procedure GetAdminEvents 
    @buildingids nvarchar(1000),
    @startdate datetime
as
SELECT id,startDateTime, endDateTime From
            tb_bookings t INNER JOIN 
dbo.IntegerCommaSplit(@buildingids) i
on i.IntegerValue = t.id
 WHERE startDateTime <= @fromDate

Наконец, ваш ado.net код:

[WebMethod]
        public MiniEvent[] getAdminEvents(int[] buildingIDs, DateTime startDate)
        command.CommandText = @"exec GetAdminEvents";
 SqlParameter buildID= new SqlParameter("@buildingIDs", buildingIDs);

Это выходит далеко за mssql рамки вашего вопроса, но visual-c# он сделает то, что вам нужно.

Примечание. если c-sharp вы передадите что-либо, кроме visual-c# int, вся функция базы данных c#-language завершится ошибкой. Я оставляю sql-srever обработку ошибок для этого ms-sql-server в качестве упражнения для .cs-file конечного пользователя.

c#

sql-server

tsql

ado.net

sqlparameter

2022-10-24T11:32:50+00:00