我有一个Kendo网格,必须按一列进行过滤。它适用于IsEqualTo,IsNotEqualTo,StartsWith和EndsWith案例,但不适用于Contains或DidsNotContain案例。
我的代码如下:
switch (ertesitettDescriptor.Operator)
{
case FilterOperator.IsEqualTo:
res = res.Where(m => m.ErtesitendoSzerv.Nev.ToLower() == filterValue.ToLower());
break;
case FilterOperator.IsNotEqualTo:
res = res.Where(m => !(m.ErtesitendoSzerv.Nev.ToLower() == filterValue.ToLower()));
break;
case FilterOperator.Contains:
res = res.Where(m => m.ErtesitendoSzerv.Nev.ToLower().Contains(filterValue.ToLower()));
break;
case FilterOperator.DoesNotContain:
res = res.Where(m => !(m.ErtesitendoSzerv.Nev.ToLower().Contains(filterValue.ToLower())));
break;
case FilterOperator.StartsWith:
res = res.Where(m => (m.ErtesitendoSzerv.Nev.ToLower().StartsWith(filterValue.ToLower())));
break;
case FilterOperator.EndsWith:
res = res.Where(m => (m.ErtesitendoSzerv.Nev.ToLower().EndsWith(filterValue.ToLower())));
break;
default:
return new JavaScriptResult { Script = "kendo.alert('A szűrés módja nem támogatott!')" };
}
一切正常,所以值还可以,但是.Contains
方法不会返回任何记录。
答案 0 :(得分:0)
如果您使用LINQ to SQL,它将自动忽略大小写。您无需转换为小写或大写字母就可以实现结果。
res = res.Where(m => !(m.ErtesitendoSzerv.Nev.Contains(filterValue)));
答案 1 :(得分:0)
只需清理所有代码,然后将StringComparison
添加到您的过滤器中。我认为StringComparison解决了您的问题,因为您不再需要使用ToLower()。
StringComparison comp = StringComparison.OrdinalIgnoreCase;
switch (ertesitettDescriptor.Operator)
{
case FilterOperator.IsEqualTo:
res = res.Where(m => m.ErtesitendoSzerv.Nev.Equals(filterValue, comp);
break;
case FilterOperator.IsNotEqualTo:
res = res.Where(m => !m.ErtesitendoSzerv.Nev.Equals(filterValue, comp);
break;
case FilterOperator.Contains:
res = res.Where(m => m.ErtesitendoSzerv.Nev.Contains(filterValue, comp));
break;
case FilterOperator.DoesNotContain:
res = res.Where(m => !m.ErtesitendoSzerv.Nev.Contains(filterValue, comp));
break;
case FilterOperator.StartsWith:
res = res.Where(m => m.ErtesitendoSzerv.Nev.StartsWith(filterValue, comp));
break;
case FilterOperator.EndsWith:
res = res.Where(m => m.ErtesitendoSzerv.Nev.EndsWith(filterValue, comp));
break;
default:
return new JavaScriptResult { Script = "kendo.alert('A szűrés módja nem támogatott!')" };
}