Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.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# 自动将类型字符串中的值转换为布尔C_C#_.net - Fatal编程技术网

C# 自动将类型字符串中的值转换为布尔C

C# 自动将类型字符串中的值转换为布尔C,c#,.net,C#,.net,我正在解析xml文件并将其存储在OrderedDictionary数据类型中,xml标记名为“key”,其内部xml为“value”。在读取值并将其存储在OrderedDictionary变量中之前,一切正常 当我尝试使用KeyValuePair读取OrderedDictionary时,密钥费用的值显示为False,并抛出System.InvalidCastException。我知道这是一个类型转换问题,但我的问题是如何将存储为“string”的值转换为“boolean” 这是处理此任务的一小段

我正在解析xml文件并将其存储在OrderedDictionary数据类型中,xml标记名为“key”,其内部xml为“value”。在读取值并将其存储在OrderedDictionary变量中之前,一切正常

当我尝试使用KeyValuePair读取OrderedDictionary时,密钥费用的值显示为False,并抛出System.InvalidCastException。我知道这是一个类型转换问题,但我的问题是如何将存储为“string”的值转换为“boolean”

这是处理此任务的一小段代码:

for (int j = 0; j < intXmlRecordFieldCount; j++) {
XmlTagname = xmlRootNode.ChildNodes[i].ChildNodes[j].Name.ToString().Trim();
xmlTagInnerValue = xmlRootNode.ChildNodes[i].ChildNodes[j].InnerXml.ToString().Trim();
DictXmlRecordColumns.Add(XmlTagname, xmlTagInnerValue);
}

foreach (KeyValuePair<string, string> kvp in DictXmlRecordColumns) {
    string xmlTagName = kvp.Key;
    string xmlInnerValue = kvp.Value;
    DataRow[] resultset= dsResult.Tables[0].Select("ColumnName='"+xmlTagName+"'");
    Console.WriteLine(resultset.Length);
    if (Int32.Parse(xmlInnerValue) >= MinValue&& Int32.Parse(xmlInnerValue) <= MaxValue) {
        string QueryParamColumnNames = null;
        string QueryParamColumnValues = null;
        foreach (KeyValuePair<string, string> SqlQueryParams in SqlQueryParams) {
                QueryParamColumnNames += SqlQueryParams.Key.Trim() + ',';
                QueryParamColumnValues += convertToSqlParams(SqlQueryParams.Value.Trim()) + ',';
        }
    QueryParamColumnValues = QueryParamColumnValues.TrimEnd(',');
    sqlInsertQueries.Add("INSERT INTO " + dbTableName + " (" + QueryParamColumnNames + ") values( " + QueryParamColumnValues + ")");
}
这是我打算解析的示例xml

<studentrecords>
<STUDENT_RECORDS>
    <RollNumber>1</RollNumber>
    <Name>Akshay</Name>
    <Gender>Male</Gender>
    <Fees>900.00</Fees>
</STUDENT_RECORDS>

<STUDENT_RECORDS> 
    <RollNumber>2</RollNumber>
    <Name>Alex</Name>
    <Age>8</Age>
    <Gender>Male</Gender>
    <Fees>900.00</Fees>
</STUDENT_RECORDS>

</studentrecords>
有人能帮我解决这个问题吗

Edit1:我希望费用取为900.00,但如何将其转换为布尔值。有什么方法可以避免这种情况吗


Edit2:添加了XML示例

通过修复代码行解决了它 DictXmlRecordColumns中的foreach KeyValuePair kvp到 foreach Dictionary在DictXmlRecord列中输入de,如中所述。 它成功了。
感谢您的时间和帮助。

似乎您的数据库中有布尔列,您正在尝试插入字符串值False而不是布尔值False。您不需要在数字周围加引号,也不需要插入带有“0”和“1”的布尔来回避mistakes@SergeyBerezovskiy兄弟,但我没有任何疑问。我只是从一个变量到另一个变量。不涉及数据库操作QueryParamColumnNames=SqlQueryParams.Selectx=>x.Key.ToArray;string ColumnNames=string.Join,,QueryParamColumnNames;QueryParamColumnValues=SqlQueryParams.Selectx=>x.Value.ToString.ToArray;string ColumnValues=string.Join,,QueryParamColumnValues;您可以添加您解析的实际XML吗?没有它我们只能猜测它是什么样子。。。