Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将布尔值转换为字符 dataTable.Columns.Add(“TransID”); var dr=dataTable.NewRow(); 对于(int i=0;i_C#_C# 4.0_C# 3.0 - Fatal编程技术网

C# 将布尔值转换为字符 dataTable.Columns.Add(“TransID”); var dr=dataTable.NewRow(); 对于(int i=0;i

C# 将布尔值转换为字符 dataTable.Columns.Add(“TransID”); var dr=dataTable.NewRow(); 对于(int i=0;i,c#,c#-4.0,c#-3.0,C#,C# 4.0,C# 3.0,这是我的密码。我从dt.Rows[I][1]中的数据表中获取布尔值。我需要将布尔值作为0和1发送到另一个表,作为char 我尝试了Convert.ToChar,但没有成功。我能想到的最简单的方法就是这样做: dataTable.Columns.Add("TransID"); var dr = dataTable.NewRow(); for (int i = 0; i < dt.Rows.Count; i++) { dataTable.Rows.Add(dt.Rows[i][1]);

这是我的密码。我从
dt.Rows[I][1]
中的数据表中获取布尔值。我需要将布尔值作为0和1发送到另一个表,作为
char


我尝试了
Convert.ToChar
,但没有成功。

我能想到的最简单的方法就是这样做:

dataTable.Columns.Add("TransID");
var dr = dataTable.NewRow();

for (int i = 0; i < dt.Rows.Count; i++)
{
   dataTable.Rows.Add(dt.Rows[i][1]);                   
   vRFCStructure.SetValue("BARCODE", dt.Rows[i][0]);
   vRFCStructure.SetValue("STATUS", Convert.ToChar(dt.Rows[i][1]));
   vRFCStructure.SetValue("MBLNR", " ");
}
首先将其强制转换为
bool
。然后根据布尔值返回
1
0
。如果列为
null
,它将中断

如前所述,您还可以添加对nullable bool的支持:

vRFCStructure.SetValue("STATUS", ((bool)dt.Rows[i][1]) ? '1' : '0');

如果列为空,则应返回
0

使用
Convert时是否出现异常。ToChar
?错误为字符串长度必须正好为一个字符。这是我使用Convert时遇到的异常。ToChar@SanthoshRaja如果这是一个例外,那么它是否包含一个实际的布尔值或一个带值的字符串“True”或“False”?Convert.ToChar(bool)总是抛出InvalidCastException。它不受支持。@SanthoshRaja-没问题。它可能不是最优雅的解决方案,但只要列不为
null
,它就应该可以工作。如果为null,则可以执行
(bool?)dt.Rows[i][1])==true?'1':'0'
因此
null
false
导致
0
谢谢@fubo。我已经用你的建议改进了答案。@SanthoshRaja如果这个选项帮助你解决了问题,你应该点击绿色复选标记接受答案
vRFCStructure.SetValue("STATUS", ((bool?)dt.Rows[i][1]) == true ? '1' : '0');