下面是我使用谓词构建器进行搜索的方法,在visual studio中没有显示错误,但问题是下面的代码没有执行。
public JsonResult GetSearchedGraph(string searchItem, string itemTypeEnum)
{
var pre = PredicateBuilder.True<Graph>();
pre.And(m => m.isHidden == false && m.ItemType!="FOLDER");
if (!String.IsNullOrEmpty(searchItem))
{
pre.And(m => m.GraphItemTitle.ToUpper().Contains(searchItem.ToUpper()));
}
if (!String.IsNullOrEmpty(itemTypeEnum))
{
pre.And(m => m.ItemType == itemTypeEnum);
}
var searchGraph = from m in db.Graphs.AsQueryable() select m;
searchGraph = db.Graphs.Where(pre);
return Json(searchGraph.ToList(), JsonRequestBehavior.AllowGet);
}
我没有通过使用此方法得到任何搜索结果这个代码有什么问题?
答案 0 :(得分:0)
嗯,你只需做正确的作业。
因为pre.And()
不会影响pre
var pre = PredicateBuilder.True<Graph>();
//assign result of pre.And(xxx) to pre
pre = pre.And(m => m.isHidden == false && m.ItemType!="FOLDER");
if (!String.IsNullOrEmpty(searchItem))
{
//same
pre = pre.And(m => m.GraphItemTitle.ToUpper().Contains(searchItem.ToUpper()));
}
if (!String.IsNullOrEmpty(itemTypeEnum))
{
//same
pre = pre.And(m => m.ItemType == itemTypeEnum);
}