Define a column as nullable in System.Data.DataTable

I need to define a System.Data.DataTable in C# VS2013; in one column, it may be int or null.

But I got:

  DataSet does not support System.Nullable<>.

For the definition:

  public DataTable myDataTable
  myDataTable = new DataTable("myName");
  myDataTable.Columns.Add("ID", typeof(Int32)); 
  myDataTable.Columns.Add("value1", typeof(Int32?)); // run time error 
  myDataTable.Columns.Add("value2", typeof(Int32?)); 

Any ideas? Work around?

After making the column nullable,

 DataColumn dc = myDataTable.Columns.Add("value1", typeof(Int32));
 dc.AllowDBNull = true;

When I queried it, I got

  "Sequence contains no elements".

Please see the UPDATE.

UPDATE

    int? result = (from r in myDataTable.AsEnumerable()
                  where r.Field<Int32>("ID") == givenID
                    && r.Field<Int32?>("value1") == givenValue1
                    select r.Field<Int32>("value2")).First();

Solution 1:

It is a property of the DataColumn

public DataTable myDataTable
myDataTable = new DataTable("myName");
myDataTable.Columns.Add("ID", typeof(Int32)); 
DataColumn dc = myDataTable.Columns.Add("value1", typeof(Int32)); 
dc.AllowDBNull = true;

MSDN about AllowDBNull

Solution 2:

TRY

  public DataTable myDataTable
  myDataTable = new DataTable("myName");
  myDataTable.Columns.Add("ID", typeof(Int32)); 
  myDataTable.Columns.Add(new DataColumn { ColumnName = "VALUE1", DataType = typeof(int), AllowDBNull = true });
  myDataTable.Columns.Add(new DataColumn { ColumnName = "VALUE2", DataType = typeof(int), AllowDBNull = true });

this will make value columns nullable

and at time of insert

DataRow dr = myDataTable.NewRow();
dr["VALUE1"] = object.value1==null? (object)DBNull.Value : object.value1;

This will do what is required