首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MVC 5搜索多列

MVC 5搜索多列
EN

Stack Overflow用户
提问于 2016-05-02 14:41:57
回答 1查看 3.7K关注 0票数 1

我一整天都在尝试修改下面的教程,以搜索多个列。

https://docs.asp.net/en/latest/tutorials/first-mvc-app/search.html

搜索一列很好。我的问题是,我想搜索不止一列的关键字,我尝试过的一切都会导致类似的行为,结果是充当'And‘而不是'Or’运算符(因此,如果它出现在两个列中,而不是出现在任何一列中)。我尝试过‘案例’陈述‘如果其他’等等,但我的逻辑让我失望。我喜欢在任何一栏中寻找存在。

我的控制器代码

代码语言:javascript
复制
    public ActionResult Search(string searchString)
    {
        var ClipQry = from m in db.Incidents
                      orderby m.ClipName
                       select m.ClipName;

        var SearchResult = from LoopVar in db.Incidents
                     select LoopVar;

        if (!String.IsNullOrEmpty(searchString))
        {
            SearchResult = SearchResult.Where(s => s.ClipName.Contains(searchString));
        }


        return View("Search", SearchResult);
    }

视图代码

代码语言:javascript
复制
<form asp-controller="Incidents" asp-action="Index" method="get">
    <p>
        <input type="text" name="SearchString" class="form-control" placeholder="Search...">
    </p>
</form>

我尝试了如下方法,但它只会导致作为“和”运算符的相同行为

代码语言:javascript
复制
        if (!String.IsNullOrEmpty(searchString))
        {
            SearchResult = SearchResult.Where(s => s.ClipName.Contains(searchString));
            SearchResult = SearchResult.Where(y => y.ClipKeywords.Contains(searchString));
        }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-02 14:44:41

当前代码首先对ClipName属性进行筛选,并将结果分配给SearchResult变量。然后,在第二行中,对相同结果上的ClipKeywords属性执行筛选(SearchResult,这是从前一行筛选出来的结果)。因此,实际上您正在这里做一个

您可以在where子句中执行

代码语言:javascript
复制
if (!String.IsNullOrEmpty(searchString))
{
   SearchResult = SearchResult
                 .Where(s => s.ClipName.Contains(searchString) 
                           ||s.ClipKeywords.Contains(searchString));
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36985196

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档