ASP:NET MVC搜索中的多个单词
本文关键字:单词 搜索 NET MVC ASP | 更新日期: 2023-09-27 18:01:05
当用户搜索时,我很难找到如何处理多个单词。例如:搜索:">蓝色方框"应该能够找到:"一个方框。我该怎么做?这基本上就是我的控制器看起来像atm的样子:
public ActionResult Index(string searchString)
{
var posts = from s in _context.Posts
select s;
var postIndexViewModel = new PostIndexViewModel();
if (!String.IsNullOrEmpty(searchString))
{
posts = posts.Where(s => s.Title.Contains(searchString));
}
// More code here
return View(postIndexViewModel);
}
您的问题是使用整个字符串进行包含。这意味着它必须按该顺序包含"Blue box"
。
这就是你需要做的:
var strings = searchString.Split(' ');
var finalPosts = new List<string>();
if (!String.IsNullOrEmpty(searchString))
{
foreach (var splitString in strings)
{
finalPosts.Add(posts.FirstOrDefault(s => s.Title.Contains(splitString)));
}
}
finalPosts
列表随后包含您的结果。
我能想到的一种方法是通过拆分传入的搜索字符串来逐个搜索。
public ActionResult Index(string searchString)
{
var posts = from s in _context.Posts
select s;
var postIndexViewModel = new PostIndexViewModel();
if (!String.IsNullOrEmpty(searchString))
{
var terms = searchString.Trim().Split(' ');
posts = posts.Where(s => terms.Any(terms.Contains));
}
// More code here
return View(postIndexViewModel);
}
这对我来说非常好。请参阅下面的代码片段和屏幕截图:
string[] SplitValue = StaffSearch.Split(",");
List<HistorypodScans> query = new List<HistorypodScans>();
foreach (var word in SplitValue)
{
var staffquery = _db.HistorypodScans.Where(x => x.Waybillnumber.Contains(word) || x.AWBNO.Contains(word)).ToList();
query.AddRange(staffquery);
}
return View(query);
[enter image description here][1]
[1] :https://i.stack.imgur.com/TRmMW.jpg多个单词搜索结果