我一整天都在尝试修改下面的教程,以搜索多个列。
https://docs.asp.net/en/latest/tutorials/first-mvc-app/search.html
搜索一列很好。我的问题是,我想搜索不止一列的关键字,我尝试过的一切都会导致类似的行为,结果是充当'And‘而不是'Or’运算符(因此,如果它出现在两个列中,而不是出现在任何一列中)。我尝试过‘案例’陈述‘如果其他’等等,但我的逻辑让我失望。我喜欢在任何一栏中寻找存在。
我的控制器代码
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);
}视图代码
<form asp-controller="Incidents" asp-action="Index" method="get">
<p>
<input type="text" name="SearchString" class="form-control" placeholder="Search...">
</p>
</form>我尝试了如下方法,但它只会导致作为“和”运算符的相同行为
if (!String.IsNullOrEmpty(searchString))
{
SearchResult = SearchResult.Where(s => s.ClipName.Contains(searchString));
SearchResult = SearchResult.Where(y => y.ClipKeywords.Contains(searchString));
}发布于 2016-05-02 14:44:41
当前代码首先对ClipName属性进行筛选,并将结果分配给SearchResult变量。然后,在第二行中,对相同结果上的ClipKeywords属性执行筛选(SearchResult,这是从前一行筛选出来的结果)。因此,实际上您正在这里做一个和。
您可以在where子句中执行或。
if (!String.IsNullOrEmpty(searchString))
{
SearchResult = SearchResult
.Where(s => s.ClipName.Contains(searchString)
||s.ClipKeywords.Contains(searchString));
}https://stackoverflow.com/questions/36985196
复制相似问题