private static void AddQueryLessThanOrEqual(QueryHandle queryHandle, string columnName, object value) { var columnIndex = NativeQuery.get_column_index((QueryHandle)queryHandle, columnName, (IntPtr)columnName.Length); var valueType = value.GetType(); if (valueType == typeof(int)) { NativeQuery.int_less_equal((QueryHandle)queryHandle, columnIndex, (IntPtr)((int)value)); } else if (valueType == typeof(float)) { NativeQuery.float_less_equal((QueryHandle)queryHandle, columnIndex, (float)value); } else if (valueType == typeof(double)) { NativeQuery.double_less_equal((QueryHandle)queryHandle, columnIndex, (double)value); } else if (valueType == typeof(DateTimeOffset)) { NativeQuery.datetime_seconds_less_equal(queryHandle, columnIndex, ((DateTimeOffset)value).ToUnixTimeSeconds()); } else if (valueType == typeof(string) || valueType == typeof(bool)) { throw new Exception("Unsupported type " + valueType.Name); } else { throw new NotImplementedException(); } }