LINQ中不区分大小写的LIKE条件(使用正则表达式)
本文关键字:正则表达式 条件 LIKE 不区 大小写 LINQ | 更新日期: 2023-09-27 18:29:37
如果搜索文本和列表中的项目大小写相同(小写/大写),我有以下代码可以工作。如果存在混合套管,则该套管不起作用,。我们如何使它成为不区分大小写的搜索。
var text = "c";
var myStrings = new List<string>() { "Aa", "ACB", "cc" };
var regEx = new System.Text.RegularExpressions.Regex(text);
var results = myStrings
.Where<string>(item => regEx.IsMatch(item))
.ToList<string>();
编辑:
我需要用对方法不敏感的大小写传递那个字符串,我该怎么做。。。
public ActionResult GetItems(string text)
{
ContextObject contextObject = new ContextObject();
TransactionHistory transactionhistory = new TransactionHistory();
System.Text.RegularExpressions.Regex regEx = new System.Text.RegularExpressions.Regex(text, RegexOptions.IgnoreCase);
var items = transactionhistory.GetItems(contextObject, text);
return Json(items, JsonRequestBehavior.AllowGet);
}
尝试像这样声明您的正则表达式
Regex regEx = new Regex(text, RegexOptions.IgnoreCase);
您需要使用重载,该重载需要RegexOptions.IgnoreCase
示例
RegexOptions options = RegexOptions.IgnoreCase | RegexOptions.Compiled;
System.Text.RegularExpressions.Regex regEx = new System.Text.RegularExpressions.Regex(text, options);
编辑:
RegexOptions options = RegexOptions.IgnoreCase | RegexOptions.Compiled;
var text = "c";
var myStrings = new List<string>() { "Aa", "ACB", "cc" };
var regEx = new System.Text.RegularExpressions.Regex(text, options);
var results = myStrings
.Where<string>(item => regEx.IsMatch(item))
.ToList<string>();
//you will have 2 items in results
foreach(string s in results)
{
GetItems(s);
}
根据您的代码,为什么要使用正则表达式?我只会将正则表达式用于复杂的文本模式。在这种情况下更容易使用字符串。IndexOf()类似于
var text = "c";
var myStrings = new List<string>() { "Aa", "ACB", "cc" };
var results = myStrings
.Where(item => item.IndexOf(text, StringComparison.CurrentCultureIgnoreCase) >= 0)
.ToList();
我已经删除了where和toList中字符串的显式使用,因为它是默认应用的。