我有以下问题。我将值作为 XML 之类的字符串传递,并且我没有为数值列传递默认值,例如 false 或 0。所以,我创建了一个字典,其中键是列名,值是传递的值。
这是我当前的代码
foreach (KeyValuePair<String, String> kvp in rowValues)
{
String passedValue = kvp.Value.Trim();
String rowValue = bookingRow[kvp.Key].ToString().Trim();
if (passedValue != rowValue)
{
// code here
}
}
问题在于默认值。通过调试我的测试用例可以看到,passedValue 为空,rowValue 为 0(列为整数类型)。所以,我的问题是 - 我应该如何重新编写上面的代码以正确地将我传递的值转换为列的类型。换句话说,我需要将传递的值转换为正确类型的 DataRow 列,而不是将它们都转换为字符串。
传递值的样本 - “”。
rowValue = "" 的示例(列的长度为空字符串)
或者另一个例子:
传递值示例 = ""
对应rowValue = 0(表中值为Integer)
两种情况都应视为相同的值-无需写入历史记录。
感谢答案,我现在正在测试这段代码:
String passedValue = kvp.Value.Trim();
var rowValue = bookingRow[kvp.Key];
if (Convert.ChangeType(passedValue, rowValue.GetType()) != rowValue)
{
String rowValueString = rowValue.ToString().Trim();
if (rowValueString!=passedValue) // Double check to prevent cases of "" vs. " "
this.SaveToBookingHistory(booking_id, "M", kvp.Key, rowValueString, passedValue, ref messageText, ref statusCode);
}