c# - ASP :NET MVC multiple words in search

标签 c# asp.net asp.net-mvc search

当用户搜索时,我无法找到如何处理多个单词。示例:搜索:“蓝色盒子”应该能够找到:“一个盒子蓝色”。我该怎么做?这基本上就是我的 Controller 看起来像 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 列表将包含您的结果。

关于c# - ASP :NET MVC multiple words in search,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31205509/

相关文章:

jquery - 使用 JQuery 在复选框上动态附加选中事件

c# - 带有 MVC 的 JQuery 中的 $.ajax 和 .each 不是异步的

asp.net-mvc - 在 ASP.NET MVC 4 中使用动态类型的最佳实践是什么?

c# - 如何在 Pace.js 中使用 ASP.NET Core SignalR

c# - 从 lambda 返回数组索引但抛出 IndexOutOfRangeException

c# - WPF 工具包 DataGridCell 样式 DataTrigger

c# - 如何使用 OrmLite 固定大小而不是 null varchar?

asp.net - 有效的密码加密

asp.net - 如何将 ASP.Net 表单例份验证 loginUrl 全局化为多种语言?

c# - Html.checkbox 控件表单集合值正在获取一些额外的 true false 值