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