首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有搜索功能的多重复选框逻辑

具有搜索功能的多重复选框逻辑
EN

Stack Overflow用户
提问于 2018-04-23 22:36:59
回答 1查看 688关注 0票数 0

我有3个复选框,我将用于搜索选项。现在,用户可以选择任意数量的搜索。我的问题是:Is there a more convenient way to write out the logic for the search, rather than doing an if/else or boolean check for for every combination? 3复选框还不错,但是我可以看到5+复选框的问题。是否有更好的方法来实现多个选项的搜索功能?

这就是我目前正在做的事情:

代码语言:javascript
复制
    public ViewResult Index(string sortOrder, string currentFilter, string searchString, int? page, string searchFilter)
    {
        ViewBag.CurrentSort = sortOrder;
        ViewBag.NameSortParm = String.IsNullOrEmpty(sortOrder) ? "year" : "";

        if (searchString != null)
        {
            page = 1;
        }
        else
        {
            searchString = currentFilter;
        }

        ViewBag.CurrentFilter = searchString;
        ViewBag.CurrentFilterSelection = searchFilter;

        var resolutions = from c in db.AllResolutions select c;
        if (!String.IsNullOrEmpty(searchString))
        {
            resolutions = resolutions.Where(c => c.ResolutionYear.Contains(searchString) || c.ResolutionTextShort.Contains(searchString) || c.ResDescription.Contains(searchString));
        }

        switch (sortOrder)
        {
            case "date":
                resolutions = resolutions.OrderByDescending(c => c.ResDate);
                break;
            case "year":
                resolutions = resolutions.OrderByDescending(c => c.ResolutionYear);
                break;
            case "number":
                resolutions = resolutions.OrderByDescending(c => c.ResolutionNumber);
                break;
            default:
                resolutions = resolutions.OrderBy(c => c.ResolutionYear).ThenBy(c => c.ResolutionNumber);
                break;
        }

        int pageSize = 25;
        int pageNumber = (page ?? 1);
        return View(resolutions.ToPagedList(pageNumber, pageSize));
    }

我目前正在3列中搜索数据库,并返回包含searchString的结果。我希望用户能够选择是否要限制他们正在搜索的列。

ie: I want to search for all 2018 resolutions or I want to search all 2018 resolutions with the keyword here

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-23 22:51:10

我认为最明确的方法是这样做:

代码语言:javascript
复制
    if(searchForYear)
    {
        resolutions = resolutions.Where(c => c.ResolutionYear.Contains(searchString));
    }
    if (searchForTextShort)
    {
        resolutions = resolutions.Where(c => c.ResolutionTextShort.Contains(searchString));
    }
    //and so on for each other checkbox value

因此,基本上:是的,唯一的方法是"ifs“的”列表“,但是您可以像上面这样拆分查询构建,这样代码仍然可读且易于维护。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49990884

复制
相关文章

相似问题

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