我想为我的数据库创建一个搜索页面,并想根据不同的条件进行搜索,
看图:
表示我在搜索页面中有多个文本框和下拉菜单
例如,如果textbox1是搜索项目名称的搜索框 textbox2 是项目日期的搜索框 下拉菜单用于搜索位置
如果有人想要他可以设置多个条件进行搜索,或者他只能按一个条件进行搜索,默认情况下它应该显示所有记录。
我怎么会有这样的linq查询
我的查询目前就像 blow 一样,从表 Projects 中获取所有记录:
var query = (from c in db.Projects orderby c.ProjectId descending select c).AsEnumerable().Skip(starting).Take(2);
我们将不胜感激。
我的搜索 Controller 功能:
public ActionResult get_search()
{
string Project_name = "";
if(Request.Form["project_name"]!=null)
{
Project_name = Request.Form["project_id"];
}
int Pro_id = 0;
if(Request.Form["project_id"]!=null)
{
Pro_id = Convert.ToInt32(Request.Form["project_id"]);
}
int starting = 0;
if (Request.Form["starting"] != null)
{
starting = Convert.ToInt32(Request.Form["starting"]);
}
string strpost = "&ajax=1";
strpost += "&project_id=" + Pro_id;
var q_total = (from c in db.Projects select c);
var d = "where == 1";
//var query = from c in db.Projects.Take(2).Skip(2) orderby c.ProjectId descending select c;
var query = (from c in db.Projects orderby c.ProjectId descending select c).AsEnumerable().Skip(starting).Take(2);
if(Request.Form["project_name"]!=null)
{
query = query.Where(w => w.ProjectName.Contains(Request.Form["project_name"]));
}
int numrows = q_total.Count();
//int count = data.Count;
string links = Pagination.paginate(numrows, starting, 3, "", "page", strpost);
ViewBag.link = links;
ViewBag.query = query;
return View();
}
最佳答案
很简单的方法:
var query = from c in db.Projects where((string.IsNullOrEmpty(pname)? true : c.ProjectName.Contains(pname))) orderby c.ProjectId descending select c;
关于c# - 我怎样才能在 linq asp.net mvc 5 中拥有动态的 where 条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27204154/