C# 如何为允许DBNull的组合框创建列表?
如何为允许DBNull的组合框创建列表 我尝试了int?但是int?与DBNull不同,并且组合框不能使用null值 我的datagridview组合框,需要DBNull 我做到了:C# 如何为允许DBNull的组合框创建列表?,c#,combobox,dbnull,C#,Combobox,Dbnull,如何为允许DBNull的组合框创建列表 我尝试了int?但是int?与DBNull不同,并且组合框不能使用null值 我的datagridview组合框,需要DBNull 我做到了: var machineComboList = this.eMDataSet1.Machines.Select(row => new { Key = (int?) row.MachineID, Value = row.Des
var machineComboList = this.eMDataSet1.Machines.Select(row => new
{
Key = (int?) row.MachineID,
Value = row.Description
}).ToList();
int? nullValue = DBNull.Value;
machineComboList.Add(new { Key = nullValue, Value = "All" });
我想在“Key”中输入一个DBNull值。使用int?不起作用
相关:
DBNull
仅用于ADO.NET,用于区分缺少的值和空值
int?
可以是null
——这可能就是您要查找的内容。它不能是DBNull
,因为它们是不兼容的类型
很少在ADO.NET调用之外直接使用DBNull
。从数据库中读取时,通常会将其转换为以下形式:
object dbValue = ...;
int? intValue = dbValue != DBNull.Value ? (int)dbValue : (int?)null;
或者,如果您更信任返回的数据类型,可以将其缩短为:
object dbValue = ...;
int? intValue = dbValue as int?;
DBNull
仅用于ADO.NET,用于区分缺少的值和空值
int?
可以是null
——这可能就是您要查找的内容。它不能是DBNull
,因为它们是不兼容的类型
很少在ADO.NET调用之外直接使用DBNull
。从数据库中读取时,通常会将其转换为以下形式:
object dbValue = ...;
int? intValue = dbValue != DBNull.Value ? (int)dbValue : (int?)null;
或者,如果您更信任返回的数据类型,可以将其缩短为:
object dbValue = ...;
int? intValue = dbValue as int?;
DBNull
仅用于ADO.NET,用于区分缺少的值和空值
int?
可以是null
——这可能就是您要查找的内容。它不能是DBNull
,因为它们是不兼容的类型
很少在ADO.NET调用之外直接使用DBNull
。从数据库中读取时,通常会将其转换为以下形式:
object dbValue = ...;
int? intValue = dbValue != DBNull.Value ? (int)dbValue : (int?)null;
或者,如果您更信任返回的数据类型,可以将其缩短为:
object dbValue = ...;
int? intValue = dbValue as int?;
DBNull
仅用于ADO.NET,用于区分缺少的值和空值
int?
可以是null
——这可能就是您要查找的内容。它不能是DBNull
,因为它们是不兼容的类型
很少在ADO.NET调用之外直接使用DBNull
。从数据库中读取时,通常会将其转换为以下形式:
object dbValue = ...;
int? intValue = dbValue != DBNull.Value ? (int)dbValue : (int?)null;
或者,如果您更信任返回的数据类型,可以将其缩短为:
object dbValue = ...;
int? intValue = dbValue as int?;
DBNull.Value
不是整数的类型,它本身也不是null
本身。相反,它是一个表示空值的私有类
你可以在地图上清楚地看到这一点。它是一个公共密封类,具有一个私有构造函数和一个单例(静态只读)值
通常,当您有一个
int?
或任何空值时,ADO.NET希望传入一个实际值。这就是为什么您总是看到将null
映射到DBNull.Value
的代码:
using (var conn = ...)
using (var cmd = ...)
{
cmd.Parameters.AddWithValue("@MachineId", machineId == null ? DBNull.Value : machinId);
// ...
}
现在,另一方面,您希望如何在用户界面中表示
null
,这取决于您自己。尽管如此,用DBNull.Value
表示它并没有真正的意义,因为这会将应用程序与ADO.NET紧密地联系在一起。如果明天您更改为非sql的其他数据存储,会发生什么情况?DBNull。Value
不是一种整数,它本身也不是null
。相反,它是一个表示空值的私有类
你可以在地图上清楚地看到这一点。它是一个公共密封类,具有一个私有构造函数和一个单例(静态只读)值
通常,当您有一个
int?
或任何空值时,ADO.NET希望传入一个实际值。这就是为什么您总是看到将null
映射到DBNull.Value
的代码:
using (var conn = ...)
using (var cmd = ...)
{
cmd.Parameters.AddWithValue("@MachineId", machineId == null ? DBNull.Value : machinId);
// ...
}
现在,另一方面,您希望如何在用户界面中表示
null
,这取决于您自己。尽管如此,用DBNull.Value
表示它并没有真正的意义,因为这会将应用程序与ADO.NET紧密地联系在一起。如果明天您更改为非sql的其他数据存储,会发生什么情况?DBNull。Value
不是一种整数,它本身也不是null
。相反,它是一个表示空值的私有类
你可以在地图上清楚地看到这一点。它是一个公共密封类,具有一个私有构造函数和一个单例(静态只读)值
通常,当您有一个
int?
或任何空值时,ADO.NET希望传入一个实际值。这就是为什么您总是看到将null
映射到DBNull.Value
的代码:
using (var conn = ...)
using (var cmd = ...)
{
cmd.Parameters.AddWithValue("@MachineId", machineId == null ? DBNull.Value : machinId);
// ...
}
现在,另一方面,您希望如何在用户界面中表示
null
,这取决于您自己。尽管如此,用DBNull.Value
表示它并没有真正的意义,因为这会将应用程序与ADO.NET紧密地联系在一起。如果明天您更改为非sql的其他数据存储,会发生什么情况?DBNull。Value
不是一种整数,它本身也不是null
。相反,它是一个表示空值的私有类
你可以在地图上清楚地看到这一点。它是一个公共密封类,具有一个私有构造函数和一个单例(静态只读)值
通常,当您有一个
int?
或任何空值时,ADO.NET希望传入一个实际值。这就是为什么您总是看到将null
映射到DBNull.Value
的代码:
using (var conn = ...)
using (var cmd = ...)
{
cmd.Parameters.AddWithValue("@MachineId", machineId == null ? DBNull.Value : machinId);
// ...
}
现在,另一方面,您希望如何在用户界面中表示null
,这取决于您自己。我想,用DBNull.Value
表示它是没有意义的,因为