SQL Server doesn't have arrays, only tables. to perform your query with set operations, you will need to pass the list as table value variable and use FromSql.
lists of lists are implements as relationship tables, but you can probably get by with just adding a set number column to the list.
CREATE TYPE StandardIdType AS TABLE
(
SetId int,
StandardId int
);
and a sp something like:
create procedure QueryStandard
@list StandardIdType readonly
AS
set nocount on
with s AS
(
select *
from
(
select ProductId, count(*) as Length from Standard s
group by productid
) as p,
(
select SetId from @list
group by SetId
) as l
), match AS
(
select s.ProductId, s.Length, s.SetId ,count(*) as MatchCount
from s
join @list l
on l.SetId = s.SetId and l.StandardId in
(
select StandardId from Standard s1
where s1.ProductId = s.ProductId
)
group by s.ProductId,s.Length,s.SetId
), result as
(
select ProductId from match
where length = MatchCount
group by ProductId
)
select *
from result;