提问人:MelB 提问时间:12/31/2022 最后编辑:MelB 更新时间:1/13/2023 访问量:72
如何设置搜索字符串的格式以从Razor页表中的多个列返回部分搜索字符串?
How to Format Search String to Return Part of Search String From More Than One Column in Razor Page Table?
问:
我有一个数据表,我想通过剃须刀页面上的搜索框进行筛选。
这是我当前的代码:
if (!String.IsNullOrEmpty(searchString))
referral = referral.Where(s => s.BoardMtgMonth.Contains(searchString) || s.BoardMtgYear.Contains(searchString));
因此,表中的一列 (BoardMtgMonth) 具有月份值:1 月、2 月、3 月等 另一列 (BoardMtgYear) 具有年份值:2013、2014、2020 等
我需要使我的搜索返回这 2 个值对的值。如果用户在 2020 年 3 月键入,我希望表中 BoardMtgMonth 值为 March 且 BoardMtgYear 值为 2020 的所有行都成为搜索结果。
马上 如果我在 3 月键入:我会得到所有有 3 月的行。 如果我输入 2020:我会得到所有年份为 2020 的行。 如果我在 2020 年 3 月输入:我没有得到任何返回值。
如何更改搜索字符串的格式,使其接受 AND 组合搜索?即,BoardMtgMonth = March 和 BoardMtgYear = 2020?除了 2 根管道之外还有其他东西吗 ||我应该使用吗?
感谢您的任何和所有帮助。
答:
1赞
hakim00
12/31/2022
#1
修改搜索字符串以包含由分隔符分隔的两个值,例如空格字符。然后,可以使用该方法将搜索字符串拆分为字符串数组,并使用该方法检查表中的值是否与搜索字符串中的值匹配。Split
Contains
if (!String.IsNullOrEmpty(searchString))
{
string[] searchValues = searchString.Split(' ');
referral = referral.Where(s => s.BoardMtgMonth.Contains(searchValues[0]) && s.BoardMtgYear.Contains(searchValues[1]));
}
检查该列是否包含第一个值(=> 个月值)以及该列是否包含数组中的第二个值(=> year 值)。Where
BoardMtgMonth
BoardMtgYear
searchValues
如示例所示,将拆分为 和 .January 2023
January
2023
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]));
}
}
这将结合单值和多值搜索。
评论
1赞
MelB
12/31/2022
非常感谢。正是我需要的!非常清楚的解释。只是需要语法方面的帮助。:)
评论