private static string GetColumnODataFilter <T>(RadzenDataGridColumn <T> column, bool second = false) { var property = column.GetFilterProperty().Replace('.', '/'); var columnFilterOperator = !second?column.GetFilterOperator() : column.GetSecondFilterOperator(); var value = !second ? (string)Convert.ChangeType(column.GetFilterValue(), typeof(string)) : (string)Convert.ChangeType(column.GetSecondFilterValue(), typeof(string)); if (column.Grid.FilterCaseSensitivity == FilterCaseSensitivity.CaseInsensitive && column.FilterPropertyType == typeof(string)) { property = $"tolower({property})"; } if (column.FilterPropertyType == typeof(string)) { if (!string.IsNullOrEmpty(value) && columnFilterOperator == FilterOperator.Contains) { return(column.Grid.FilterCaseSensitivity == FilterCaseSensitivity.CaseInsensitive ? $"contains({property}, tolower('{value}'))" : $"contains({property}, '{value}')"); } else if (!string.IsNullOrEmpty(value) && columnFilterOperator == FilterOperator.StartsWith) { return(column.Grid.FilterCaseSensitivity == FilterCaseSensitivity.CaseInsensitive ? $"startswith({property}, tolower('{value}'))" : $"startswith({property}, '{value}')"); } else if (!string.IsNullOrEmpty(value) && columnFilterOperator == FilterOperator.EndsWith) { return(column.Grid.FilterCaseSensitivity == FilterCaseSensitivity.CaseInsensitive ? $"endswith({property}, tolower('{value}'))" : $"endswith({property}, '{value}')"); } else if (!string.IsNullOrEmpty(value) && columnFilterOperator == FilterOperator.Equals) { return(column.Grid.FilterCaseSensitivity == FilterCaseSensitivity.CaseInsensitive ? $"{property} eq tolower('{value}')" : $"{property} eq '{value}'"); } else if (!string.IsNullOrEmpty(value) && columnFilterOperator == FilterOperator.NotEquals) { return(column.Grid.FilterCaseSensitivity == FilterCaseSensitivity.CaseInsensitive ? $"{property} ne tolower('{value}')" : $"{property} ne '{value}'"); } } else if (PropertyAccess.IsNumeric(column.FilterPropertyType)) { return($"{property} {ODataFilterOperators[columnFilterOperator]} {value}"); } else if (column.FilterPropertyType == typeof(bool) || column.FilterPropertyType == typeof(bool?)) { return($"{property} eq {value.ToLower()}"); } else if (column.FilterPropertyType == typeof(DateTime) || column.FilterPropertyType == typeof(DateTime?) || column.FilterPropertyType == typeof(DateTimeOffset) || column.FilterPropertyType == typeof(DateTimeOffset?)) { return($"{property} {ODataFilterOperators[columnFilterOperator]} {DateTime.Parse(value, null, System.Globalization.DateTimeStyles.RoundtripKind).ToString("yyyy-MM-ddTHH:mm:ss.fffZ")}"); } else if (column.FilterPropertyType == typeof(Guid) || column.FilterPropertyType == typeof(Guid?)) { return($"{property} {ODataFilterOperators[columnFilterOperator]} {value}"); } return(""); }
private static string GetColumnFilter <T>(RadzenDataGridColumn <T> column, bool second = false) { var property = PropertyAccess.GetProperty(column.GetFilterProperty()); if (property.IndexOf(".") != -1) { property = $"({property})"; } var columnFilterOperator = !second?column.GetFilterOperator() : column.GetSecondFilterOperator(); var linqOperator = LinqFilterOperators[columnFilterOperator]; if (linqOperator == null) { linqOperator = "=="; } var value = !second ? (string)Convert.ChangeType(column.GetFilterValue(), typeof(string)) : (string)Convert.ChangeType(column.GetSecondFilterValue(), typeof(string)); if (column.FilterPropertyType == typeof(string)) { string filterCaseSensitivityOperator = column.Grid.FilterCaseSensitivity == FilterCaseSensitivity.CaseInsensitive ? ".ToLower()" : ""; if (!string.IsNullOrEmpty(value) && columnFilterOperator == FilterOperator.Contains) { return($@"({property} == null ? """" : {property}){filterCaseSensitivityOperator}.Contains(""{value}""{filterCaseSensitivityOperator})"); } else if (!string.IsNullOrEmpty(value) && columnFilterOperator == FilterOperator.StartsWith) { return($@"({property} == null ? """" : {property}){filterCaseSensitivityOperator}.StartsWith(""{value}""{filterCaseSensitivityOperator})"); } else if (!string.IsNullOrEmpty(value) && columnFilterOperator == FilterOperator.EndsWith) { return($@"({property} == null ? """" : {property}){filterCaseSensitivityOperator}.EndsWith(""{value}""{filterCaseSensitivityOperator})"); } else if (!string.IsNullOrEmpty(value) && columnFilterOperator == FilterOperator.Equals) { return($@"({property} == null ? """" : {property}){filterCaseSensitivityOperator} == ""{value}""{filterCaseSensitivityOperator}"); } else if (!string.IsNullOrEmpty(value) && columnFilterOperator == FilterOperator.NotEquals) { return($@"({property} == null ? """" : {property}){filterCaseSensitivityOperator} != ""{value}""{filterCaseSensitivityOperator}"); } } else if (PropertyAccess.IsNumeric(column.FilterPropertyType)) { return($"{property} {linqOperator} {value}"); } else if (column.FilterPropertyType == typeof(DateTime) || column.FilterPropertyType == typeof(DateTime?) || column.FilterPropertyType == typeof(DateTimeOffset) || column.FilterPropertyType == typeof(DateTimeOffset?)) { 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 (column.FilterPropertyType == typeof(bool) || column.FilterPropertyType == typeof(bool?)) { return($"{property} == {value}"); } else if (column.FilterPropertyType == typeof(Guid) || column.FilterPropertyType == typeof(Guid?)) { return($@"{property} {linqOperator} Guid(""{value}"")"); } return(""); }