use*_*329 13 .net c# asp.net-mvc-3 asp.net-mvc-4
我有以下代码
var returnData = DemoData.Books.AsQueryable();
if (criteria.Author != string.Empty)
{
returnData = returnData.Where(x => x.Author.Contains(criteria.Author));
}
Run Code Online (Sandbox Code Playgroud)
如何使where子句不区分大小写?
Far*_*yev 28
你可以使用ToLower()
功能.ToLower
将字符串更改为全部小写.它会转换整个字符串,而不会更改已经小写或数字的字母.它复制一个字符串并返回对新字符串的引用.所以criteria.Author.ToLower()
在查询之外声明总是更好的选择.
string lowerAuthor = criteria.Author.ToLower();
returnData = returnData.Where
(x => x.Author.ToLower().Contains(lowerAuthor));
Run Code Online (Sandbox Code Playgroud)你也可以使用枚举的IndexOf
重载StringComparison
.它会给你更好的表现ToLower()
.此重载的签名是:
int string.IndexOf(string value, StringComparison comparisonType);
Run Code Online (Sandbox Code Playgroud)
returnData = returnData.Where
(x => x.Author.IndexOf(criteria.Author, StringComparison.CurrentCultureIgnoreCase) != -1);
Run Code Online (Sandbox Code Playgroud)returnData = returnData.Where
(x => x.Author.IndexOf(criteria.Author, StringComparison.CurrentCultureIgnoreCase) != -1)
Run Code Online (Sandbox Code Playgroud)
它根本不会进行额外的字符串分配.
我假设它是LINQ to Objects查询.
归档时间: |
|
查看次数: |
33672 次 |
最近记录: |