Ошибка при передаче массива используя Transact-SQL для фильтрации только тех пользователей из таблицы Users которых передаем в массиве

получаемая ошибка: System.ArgumentException : Отсутствует сопоставление типа объекта System.Int32[] с известным собственным типом управляемого поставщика.

public async Task<User[]> IsUsersInGroupAsync(User[] users, Int32 id_group, String connection_string = null)
{
    using REMOTE_OFFICE_3Entities db = new(connection_string: connection_string);

    Int32[] ids = users.Select(user => user.id).ToArray();

    List<SqlParameter> sql_parameters = new()
    {
        new SqlParameter(parameterName: "arrayUsersId", value: ids),
        new SqlParameter(parameterName: "groupId", value: id_group)
    };

    SqlParameter[] parameters = sql_parameters.ToArray();
    
    const String sql2 = @"
            SELECT *
            FROM Users
            WHERE Id IN (SELECT * FROM @arrayUsersId)
            AND Id IN (SELECT id_user FROM UsersAndGroups WHERE id_group = @groupId)";

    User[] users_in_group = await db.Database.SqlQuery<User>(sql: sql2, parameters).ToArrayAsync();

    return users_in_group;}

так же пробовал таким способом:

new SqlCommand(cmdText: $"DECLARE @UserIds TABLE (UserId INT);" +
                                             $"INSERT INTO @UserIds (UserId) VALUES ({String.Join(",", values: users.Select(user => user.id))})" +
                                             $"SELECT * FROM Users WHERE Id IN (SELECT * FROM @UserIds) AND Id IN " +
                                             $"(SELECT id_user FROM UsersAndGroups WHERE id_group = {id_group})").ToString();

Ответы (1 шт):

Автор решения: rotabor

Так это не работает.

Нужно сделать следующее:

new SqlParameter(parameterName: "arrayUsersId", value: String.Join(", ", ids))
...
WHERE Id IN (@arrayUsersId)
→ Ссылка