我需要像这样在linq上进行搜索。例如,我将在Name列上进行搜索,用户在文本框中输入“Ca?an”字样。对于这种情况,问号将用于sprecial搜索字符。 它将按名称列搜索,找到Canan,Calan,Cazan等。 我希望我能正确解释我的问题。 任何人都可以给我一个关于这个linq查询的想法。提前感谢...
答案 0 :(得分:0)
您可以使用此正则表达式(如果您使用的是C#)来检查“Ca?an”。
string d = "DDDDDDDDDDCasanDDDDDDDDDD";
Regex r = new Regex(@"Ca([a-zA-Z]{1})an");
string t = r.Match(d).Value;
输出将是:
“CASAN”
您将所有colum存储在数据库中,然后执行以下操作:
List<Person> list = new List<Person>(); //Filled
var res = list.Select(x => r.Match(x.Name));
输出将是一个IEnumerable,所有“人物”包含在名称“Ca?an”中,是?不管是哪个字母
答案 1 :(得分:0)
您需要将搜索语法转换为现有的搜索引擎 - 我建议使用Regex。所以步骤将是:
解决方案:
1:通过替换'?'安全地转换搜索字符串使用Regex版本的wildchar:
var userInput = "Ca?an";
var regexPattern = Regex.Escape(userInput).Replace(@"\?", ".");
2:在Linq中执行搜索(假设itemList
实现了IEnumerable):
var results = itemList.Where(item => Regex.IsMatch(item.Name, regexPattern));
希望这有帮助!