我试图在两个模型字段中使用单个文本框进行搜索:在文本框中我写了一些字母或单词并单击“搜索”按钮,因此必须在CommonName和SciName字段中搜索(两者都在同一模型中) )。以下是控制器的示例:
public ActionResult Index(string SearchParam)
{
var search = from m in db.Table1
select m;
if (!String.IsNullOrEmpty(SearchParam))
{
search= search.Where(s => s.CommonName.Contains(SearchParam) ||
s.SciName.Contains(SearchParam));
}
return View(search)
}
CommonName和SciName来自同一个模型。
观点:
@using (Html.BeginForm())
{
<table>
<th>
Serch for Name: @Html.TextBox("SearchParam")
<input type="submit" value="Search" /></th>
</table>
}
但Visual Studio会显示一条消息,说“||” operator不能与lambda表达式一起使用。有人知道怎么做这个搜索???感谢!!!
-----更新-----没有更多LAMBDA表达错误-----------
我再次检查了代码,现在没有显示错误...... ..但只搜索第一部分:
search= search.Where(s => s.CommonName.Contains(SearchParam) ||
s.SciName.Contains(SearchParam));
仅使用s => s.CommonName.Contains(SearchParam)
,||
之后的第二个条件被忽略
答案 0 :(得分:0)
我刚发现了这个问题。这是代码其他部分的身份验证问题。在这里,我留下完整的代码:
public ActionResult Index(string SearchParam)
{
var search1= (dynamic)null;
var search= from m in db.Table1
select m;
int selec = 0;
if (User.Identity.IsAuthenticated)
{
if (!String.IsNullOrEmpty(SearchParam))
{
search= search.Where(s => s.CommonName.Contains(SearchParam) || s.SciName.Contains(SearchParam));
selec = 1;
}
search1= (from d in db.Table1
select d).OrderBy(p => p.CommonName);
}
else
{
if (!String.IsNullOrEmpty(SearchParam))
{
search= search.Where(s => s.CommonName.Contains(SearchParam)||s.SciName.Contains(SearchParam)).Where(s => s.State.Equals(true));
selec = 1;
}
search1= (from d in db.Table1
where d.State== true
select d).OrderBy(p => p.CommonName);
}
if (selec == 0)
{
return View(search1);
}
return View(search);
}