foreach (KeyValuePair<String, String> kvp in rowValues) { String passedValue = kvp.Value.Trim(); String rowValue = bookingRow[kvp.Key].ToString().Trim(); if (passedValue != rowValue) { this.SaveToBookingHistory(booking_id, "M", kvp.Key, rowValue, passedValue, ref messageText, ref statusCode); } }The problem here is that, for example, we're not passing default values, say, for Integer column the passed value will be empty string and 0 in the row value. It should be treated the same, but it doesn't.