I'm writing the following SQL query using the TableAdapter Query Configuration Wizard in Visual Studio.

```
SELECT  COUNT(*) AS census
FROM Inventory INNER JOIN Taxonomy ON Inventory.GlobalID = Taxonomy.GlobalID
WHERE (Inventory.Institution = @institution) AND (Inventory.Year = @year) AND 
  (Inventory.Nending > 0)

```

I'm trying to add the following criteria to the WHERE clause:

```
(Taxonomy.Class = ISNULL(@class, Taxonomy.Class)) 

```

so that either  

 1) only rows that match the @class input parameter are returned or  

 2) all rows are returned regardless of their TaxonomyGlobal.Class value. 

When I add this statement to the query my C# code that calls the query throws a System.ArgumentNullException error and states the @class value cannot be null.

Any help on how to add this criterion to the WHERE clause would be appreciated.

C# code:

```
namespace CollectionMetrics
{
  class DatabaseQueries
  {
      QueryDataSetTableAdapters.InventoryTableAdapter queryAdapter = 
            new QueryDataSetTableAdapters.InventoryTableAdapter();

      public void CensusQuery(string institution, short year, string xclass)
      {
            int census = 0;
            string localClass = xclass;
            if (xclass == "All Classes") localClass = null;

            census = (int)queryAdapter.CensusBySpecies(localClass, institution, year);
            censusOutput.Add(census);
      }
  }
}

```