我有一个数据表,我想通过我的剃须刀页面上的搜索框进行过滤.

以下是我当前的代码:

        if (!String.IsNullOrEmpty(searchString))
            referral = referral.Where(s => s.BoardMtgMonth.Contains(searchString) || s.BoardMtgYear.Contains(searchString));

因此,表中的一列(BoardMtgMonth)具有月份值:1月、2月、3月等 另一列(BoardMtgYear)具有年份值:2013、2014、2020等

我需要使我的搜索返回值为这两个值的配对.如果用户在2020年3月输入,我希望表中BoardMtgMonth的值为3月、BoardMtgYear的值为2020的所有行都是搜索结果.

现在就来, 如果我输入3月:我将得到所有具有3月月份的行. 如果我输入2020:我会得到年份为2020的所有行. 如果我输入2020年3月:我没有得到返回值.

如何更改搜索字符串的格式,使其接受AND组合搜索?也就是说,BoardMtgMonth=3月,BoardMtgYear=2020?除了我应该使用的两根管子,||还有其他东西吗?

谢谢你所有的帮助.

推荐答案

修改搜索字符串以包括由分隔符(如空格字符)分隔的两个值.然后,您可以使用Split方法将搜索字符串分割为字符串数组,并使用Contains方法判断表中的值是否与搜索字符串中的值匹配.

if (!String.IsNullOrEmpty(searchString))
{
    string[] searchValues = searchString.Split(' ');
    referral = referral.Where(s => s.BoardMtgMonth.Contains(searchValues[0]) && s.BoardMtgYear.Contains(searchValues[1]));
}

Where判断BoardMtgMonth列是否包含第一个值(=&>月值)AND BoardMtgYear列包含searchValues数组中的第二个值(=&>年值).

例如,January 2023将分为January2023.

if (!String.IsNullOrEmpty(searchString))
{
    string[] searchValues = searchString.Split(' ');
    if (searchValues.Length == 1)
    {
        referral = referral.Where(s => s.BoardMtgMonth.Contains(searchValues[0]) || s.BoardMtgYear.Contains(searchValues[0]));
    }
    else
    {
        referral = referral.Where(s => s.BoardMtgMonth.Contains(searchValues[0]) && s.BoardMtgYear.Contains(searchValues[1]));
    }
}

这将结合单值搜索和多值搜索.

Asp.net相关问答推荐

ASP.NET Core 延迟加载始终返回 null

VS2013发布Web部署任务失败文件正在使用中

ASP.NET 平台是否有与 Heroku 等价的工具?

在程序集中找不到上下文类型

在视图 Mvc.net 中访问路由值

__doPostBack 未定义

asp.net 中的 Eval() 有什么用

使用 NancyFx 的好处?

HttpModules 的执行顺序是如何确定的?

在asp.net mvc 3中实现FilterAttribute,IActionFilter和从ActionFilterAttribute继承有什么区别?

如何确定服务器端 C# 上的浏览​​器窗口大小

oAuth ASP.NET 成员资格提供程序

发布网站项目时临时路径太长

如何在 asp net core api 中使用 Created(或 CreatedAtAction / CreatedAtRoute)

如何在 ASP.net 中使用 wkhtmltopdf.exe

svg 无法在 localhost 上的 IIS 网络服务器上运行

Cache.Add 绝对过期 - 是否基于 UTC?

删除 HTML 或 ASPX 扩展

将字符串转换为时间

如何使 URL 重写与 web.Release.config 转换一起工作?