private static string GetColumnFilter <T>(RadzenGridColumn <T> column, bool second = false)
        {
            var property = PropertyAccess.GetProperty(column.GetFilterProperty());

            if (property.IndexOf(".") != -1)
            {
                property = $"({property})";
            }

            if (column.Type == "string" && string.IsNullOrEmpty(column.Format))
            {
                property = $@"({property} == null ? """" : {property})";
            }

            var columnFilterOperator = !second ? column.FilterOperator : column.SecondFilterOperator;

            var linqOperator = FilterOperators[columnFilterOperator];

            if (linqOperator == null)
            {
                linqOperator = "==";
            }

            var value = !second ? (string)Convert.ChangeType(column.FilterValue, typeof(string)) :
                        (string)Convert.ChangeType(column.SecondFilterValue, typeof(string));

            var columnType   = column.Type;
            var columnFormat = column.Format;

            if (columnType == "string")
            {
                string filterCaseSensitivityOperator = column.Grid.FilterCaseSensitivity == FilterCaseSensitivity.CaseInsensitive ? ".ToLower()" : "";

                if (columnFormat == "date-time" || columnFormat == "date")
                {
                    var dateTimeValue = DateTime.Parse(value, null, System.Globalization.DateTimeStyles.RoundtripKind);
                    var finalDate     = dateTimeValue.TimeOfDay == TimeSpan.Zero ? dateTimeValue.Date : dateTimeValue;
                    var dateFormat    = dateTimeValue.TimeOfDay == TimeSpan.Zero ? "yyyy-MM-dd" : "yyyy-MM-ddTHH:mm:ssZ";

                    return($@"{property} {linqOperator} DateTime(""{finalDate.ToString(dateFormat)}"")");
                }
                else if (columnFormat == "time")
                {
                    return($"{property} {linqOperator} duration'{value}'");
                }
                else if (columnFormat == "uuid")
                {
                    return($@"{property} {linqOperator} Guid(""{value}"")");
                }
                else if (!string.IsNullOrEmpty(value) && columnFilterOperator == "contains")
                {
                    return($@"({property} == null ? """" : {property}){filterCaseSensitivityOperator}.Contains(""{value}""{filterCaseSensitivityOperator})");
                }
                else if (!string.IsNullOrEmpty(value) && columnFilterOperator == "startswith")
                {
                    return($@"({property} == null ? """" : {property}){filterCaseSensitivityOperator}.StartsWith(""{value}""{filterCaseSensitivityOperator})");
                }
                else if (!string.IsNullOrEmpty(value) && columnFilterOperator == "endswith")
                {
                    return($@"({property} == null ? """" : {property}){filterCaseSensitivityOperator}.EndsWith(""{value}""{filterCaseSensitivityOperator})");
                }
                else if (!string.IsNullOrEmpty(value) && columnFilterOperator == "eq")
                {
                    return($@"{property} == null ? """" : {property}{filterCaseSensitivityOperator} == {value}{filterCaseSensitivityOperator}");
                }
            }
            else if (columnType == "number" || columnType == "integer")
            {
                return($"{property} {linqOperator} {value}");
            }
            else if (columnType == "boolean")
            {
                return($"{property} == {value}");
            }

            return("");
        }
        private static string GetColumnODataFilter <T>(RadzenGridColumn <T> column, bool second = false)
        {
            var columnType   = column.Type;
            var columnFormat = column.Format;

            var property = column.GetFilterProperty().Replace('.', '/');

            var columnFilterOperator = !second ? column.FilterOperator : column.SecondFilterOperator;

            var value = !second ? (string)Convert.ChangeType(column.FilterValue, typeof(string)) :
                        (string)Convert.ChangeType(column.SecondFilterValue, typeof(string));

            if (column.Grid.FilterCaseSensitivity == FilterCaseSensitivity.CaseInsensitive && columnType == "string" && string.IsNullOrEmpty(columnFormat))
            {
                property = $"tolower({property})";
            }

            if (columnType == "string")
            {
                if (columnFormat == "date-time" || columnFormat == "date")
                {
                    return($"{property} {columnFilterOperator} {DateTime.Parse(value, null, System.Globalization.DateTimeStyles.RoundtripKind).ToString("yyyy-MM-ddTHH:mm:ss.fffZ")}");
                }
                else if (columnFormat == "time")
                {
                    return($"{property} {columnFilterOperator} duration'{value}'");
                }
                else if (columnFormat == "uuid")
                {
                    return($"{property} {columnFilterOperator} {value}");
                }
                else if (!string.IsNullOrEmpty(value) && columnFilterOperator == "contains")
                {
                    return(column.Grid.FilterCaseSensitivity == FilterCaseSensitivity.CaseInsensitive ?
                           $"contains({property}, tolower('{value}'))" :
                           $"contains({property}, '{value}')");
                }
                else if (!string.IsNullOrEmpty(value) && columnFilterOperator == "startswith")
                {
                    return(column.Grid.FilterCaseSensitivity == FilterCaseSensitivity.CaseInsensitive ?
                           $"startswith({property}, tolower('{value}'))" :
                           $"startswith({property}, '{value}')");
                }
                else if (!string.IsNullOrEmpty(value) && columnFilterOperator == "endswith")
                {
                    return(column.Grid.FilterCaseSensitivity == FilterCaseSensitivity.CaseInsensitive ?
                           $"endswith({property}, tolower('{value}'))" :
                           $"endswith({property}, '{value}')");
                }
                else if (!string.IsNullOrEmpty(value) && columnFilterOperator == "eq")
                {
                    return($"{property} eq {value}");
                }
            }
            else if (columnType == "number" || columnType == "integer")
            {
                return($"{property} {columnFilterOperator} {value}");
            }
            else if (columnType == "boolean")
            {
                return($"{property} eq {value.ToLower()}");
            }

            return("");
        }