在一个文本框的两个模型字段中搜索功能

时间:2013-10-23 00:03:50

标签: c# asp.net

我试图在两个模型字段中使用单个文本框进行搜索:在文本框中我写了一些字母或单词并单击“搜索”按钮,因此必须在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)||之后的第二个条件被忽略

1 个答案:

答案 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);

        }