I don't have all your code, so this might not be exactly correct; but you should be able to do something like this...
foreach (KeyValuePair<String, String> kvp in rowValues)
{
var rowValue = bookingRow[kvp.Key];
var passedValue = Convert.ChangeType(kvp.Value.Trim(), bookingRow[kvp.Key].GetType());
// or, if your bookingRow comes from a table
var passedValue = Convert.ChangeType(kvp.Value.Trim(), table.Columns[kvp.Key].DataType);
if (passedValue.Equals(rowValue) == false)
{
// code here
}
}
Edit: You are going to have some issues with this. You need to use the .Equals method (I've changed the code above), because ChangeType returns an object; and != does a reference comparison. This will take care of cases where the rowValue is 0 and the passedValue is 0 boxed as an object.
However, this will not address cases where you have "" and " ". Those two things are not the same, and they are not equal; and, you don't know without inspecting the values that they are strings. So, I would suggest you write some sort of functions to perform the comparisons manually.