2016-12-03 94 views
-1

将列定义为可为空的,我需要在C#VS2013以限定System.Data.DataTable。在一列中在System.Data.DataTable在C#VS2013

,它可能是int或空。

但我得到:

DataSet does not support System.Nullable<>. 

对于定义:

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?)); 

任何想法?解决?

使得柱Dullable后,

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

当我问它,我得到了

"Sequence contains no elements". 

请参阅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(); 

回答

2

这是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

+0

谢谢你的属性,它的工作原理,但是当我问它,我得到了“序列不包含任何元素”。请参阅UPDATE。 – Lily

+0

这是一个不同的问题。如果查询的结果没有匹配,那么你不能首先因为正是'序列不包含任何元素的使用。而是使用FirstOrDefault – Steve