Passer des ensembles et des paramètres facultatifs à une procédure stockée T-SQL - ASP.NET

Une tâche énorme pour moi. J'ai quelques questions. Déjà vous les gars m'ont beaucoup aidé, mais j'ai une difficulté après l'autre et de progresser incroyablement lentement. Ces questions permettront de mieux décrire mes tâches.

J'ai un page aspx avec les contrôles suivants: zone de texte, CheckBoxList DropDownList.
Ils sont utilisés pour spécifier des critères de recherche. Les enregistrements sont prises à partir de SQL Server Base de Données à l'aide d'une procédure stockée.

0), Il est clair comment passer d'un texte à partir de zone de texte à la recherche d'un produit par son nom. Pas de questions ici.

1) Chaque Case dans CheckBoxList a une valeur réelle de l'ID d'un Groupe de Produits dans la base de données. Si plus d'une case à cocher est sélectionnée, comment passer de la liste des Identifiants à une procédure stockée comme un ensemble, de sorte que je pouvais utiliser DANS @IdList? Quels types de variables dois-je utiliser en C# et T-SQL? Est-il possible?

2) DropDownList's premier élément est "TOUS". Lorsque "ALL" est sélectionné, j'ai besoin de passer à quelque chose comme NULL à la procédure stockée. Comment faire de la procédure stockée à ignorer un paramètre s'il est NULL?

Je suis épuisé, aucune idées viennent plus, j'ai même essayé de faire la recherche par chaque critère séparément, puis de les mettre a trouvé IDs dans des tableaux individuels, de les comparer et de composer un tableau avec le commun des Id, mais il y avait de nombreux problèmes, j'ai dû utiliser le géant des tableaux statiques, inefficace l'utilisation de la mémoire, incapable de créer des tableaux dynamiques, impossible de vérifier l'intersection de seulement non nulle éléments et ainsi de suite, j'ai donc abandonné cette idée...

CREATE PROCEDURE FilterList
    @ProductName nvarchar(200),
    @ProductGroupID int
AS BEGIN 
SELECT 
    prod_id AS 'ID',
    prod_name AS 'Name'
FROM 
    dbo.Products
WHERE 
    prod_group_id = @ProductGroupID OR
    prod_name = @ProductName
END

source d'informationauteur SWA