private static void AddQueryNotEqual(QueryHandle queryHandle, string columnName, object value) { var columnIndex = NativeQuery.get_column_index((QueryHandle)queryHandle, columnName, (IntPtr)columnName.Length); var valueType = value.GetType(); if (value.GetType() == typeof(string)) { string valueStr = (string)value; NativeQuery.string_not_equal((QueryHandle)queryHandle, columnIndex, valueStr, (IntPtr)valueStr.Length); } else if (valueType == typeof(bool)) { NativeQuery.bool_not_equal((QueryHandle)queryHandle, columnIndex, MarshalHelpers.BoolToIntPtr((bool)value)); } else if (valueType == typeof(int)) { NativeQuery.int_not_equal((QueryHandle)queryHandle, columnIndex, (IntPtr)((int)value)); } else if (valueType == typeof(float)) { NativeQuery.float_not_equal((QueryHandle)queryHandle, columnIndex, (float)value); } else if (valueType == typeof(double)) { NativeQuery.double_not_equal((QueryHandle)queryHandle, columnIndex, (double)value); } else if (valueType == typeof(DateTimeOffset)) { NativeQuery.datetime_seconds_not_equal(queryHandle, columnIndex, ((DateTimeOffset)value).ToUnixTimeSeconds()); } else { throw new NotImplementedException(); } }