Lil*_*ily 3 .net c# visual-studio
我需要在C#VS2013中定义一个System.Data.DataTable.
在一列中,它可以是int或null.
但我得到了:
DataSet does not support System.Nullable<>.
Run Code Online (Sandbox Code Playgroud)
对于定义:
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?));
Run Code Online (Sandbox Code Playgroud)
有任何想法吗 ?解决?
使列Dullable后,
DataColumn dc = myDataTable.Columns.Add("value1", typeof(Int32));
dc.AllowDBNull = true;
Run Code Online (Sandbox Code Playgroud)
当我查询它时,我得到了
"Sequence contains no elements".
Run Code Online (Sandbox Code Playgroud)
请参阅更新.
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();
Run Code Online (Sandbox Code Playgroud)
它是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;
Run Code Online (Sandbox Code Playgroud)
尝试
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 });
Run Code Online (Sandbox Code Playgroud)
这将使值列可以为空
并在插入时
DataRow dr = myDataTable.NewRow();
dr["VALUE1"] = object.value1==null? (object)DBNull.Value : object.value1;
Run Code Online (Sandbox Code Playgroud)
这将执行所需的操作