我的数据库表包含带有BBCODES的文本
QuestionId | QuestionText
1 | What is your [u]name[/u]?
2 | [i]How[/i] old are you?
我需要使用包含搜索字符串的表格中的EF搜索所有记录而不管bbcodes。
所以,以下代码什么都不返回:
var searchTerm = "your name".ToLower();
var query = _repository.GetAll().Where(question=>question.QuestionText.ToLower().Contains(searchTerm))
但我需要获得第一张唱片。
搜索记录时忽略特殊标记的最佳方法是什么?
答案 0 :(得分:0)
您可以在白色空间中拆分搜索短语,以获取要搜索的单独字词,然后使用更多LINQ来查找匹配项目。使用字符串列表而不是EF类的简单示例:
List<string> Questions = new List<string>();
Questions.Add("What is your [u]name[/u]?");
Questions.Add("[i]How[/i] old are you?");
String searchTerm = "your name".ToLower();
String[] searchPhrases = searchTerm.Split(null);
var matching = (from question in Questions
where searchPhrases.Any(searchPhrase => question.Contains(searchPhrase))
select question);
它应该有用,只要你搜索的单词中没有任何一个都有BBCODES。