【发布时间】:2011-03-14 22:44:12
【问题描述】:
我正在利用this project to use jqgrid to filter and sort collections。一个缺失的功能是这个例子没有做我需要的不区分大小写的搜索。
因此,如果用户键入“Test”,我希望它与“TEST”、“TeST”等匹配。 .
我的代码如下所示:
case WhereOperation.Equal:
condition = Expression.Equal(memberAccessToString, filter);
lambda = Expression.Lambda(condition, parameter);
break;
case WhereOperation.NotEqual:
condition = Expression.NotEqual(memberAccessToString, filter);
lambda = Expression.Lambda(condition, parameter);
break;
case WhereOperation.Contains:
condition = Expression.Call(memberAccessToString,
typeof(string).GetMethod("Contains"),
Expression.Constant(value));
lambda = Expression.Lambda(condition, parameter);
break;
下面是否有这些检查不区分大小写,因此“测试”将等于“测试”
Expression.NotEqual
Expression.Equal
Expression.Call(memberAccessToString,
typeof(string).GetMethod("Contains"),
【问题讨论】:
-
问题是(即使可能)你为什么需要它?似乎有一个设计问题 - 你能详细说明一下吗?
-
@BrokenGlass - 我正在使用此代码通过一些用户输入过滤集合。这里没有设计问题。用户可以输入“test”或“test”
-
那我理解错了,谢谢澄清
-
是否可以同时在过滤字符串和过滤值上调用
ToLower(可能使用Expression.Call)? -
您不能总是将用户输入格式化为小写然后进行比较吗?
标签: c# linq comparison expression