0

下面是我使用谓词生成器搜索的方法,在 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);
        }

使用这种方法我没有得到任何搜索结果,这段代码有什么问题?

4

1 回答 1

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);
}
于 2013-10-29T18:20:55.180 回答