谓词生成器问题

时间:2016-04-14 13:28:34

标签: c# asp.net-mvc-5 predicatebuilder

想象一下,我有2个数据库表... 1个表包含不同的运动:

|ID|    |Sport|
 1       Baseball
 2       Basketball
 3       Soccer

第二个表格包含Sports表格的ID,因此是外键

表格名称 - TestDB

|ID|    |SportsID|        |Test|
  1          1             test1
  2          3             test2
  3          2             test3
  4          1             test4
  5          2             test5

现在我使用Predicate Builder来允许用户在我的网络应用程序中搜索表格:

[HttpPost]
    public ActionResult allDailySummaries(int? sport, int? sport1)
    {
        List<TestDB> lstTDB = db.TDB.Include(x => x.Sports).ToList();

        var predicate = PredicateBuilder.True<TestDB>();

        if (!string.IsNullOrWhiteSpace(sport.ToString()))
        {
            predicate = predicate.And(x => x.SportsID == sport);   
        }

        if (!string.IsNullOrWhiteSpace(sport1.ToString()))
        {
            predicate = predicate.And(x => x.SportsID == sport).;
        }

        if (predicate.Parameters.Count > 0)
        {
            lstTDB = db.TestDB.AsExpandable().Where(predicate).ToList();
            ViewBag.countSports = lstTDB.Count();
            Session["Paging"] = lstTDB;
            ViewBag.Paging = lstTDB.ToPagedList(page ?? 1, 25);
            return View(lstTDB.ToPagedList(page ?? 1, 25));
        }
        else
        {
            return View(lstTDB.ToPagedList(page ?? 1,25));
        }

我应该能够过滤或搜索2项运动..所以如果我想搜索TestDB中所有棒球或篮球的记录,那么这就是我想要的......但是当我尝试这个时,它什么也没有返回,但是如果我只搜索1项运动它会起作用。

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

我有解决方案:

<tr ng-repeat="targeting in vm.TargetingsAudience | orderBy:orderByName track by $index  ">

<p ng-repeat="val in targeting.Values | orderBy:orderByName  track by $index  " class="targeting-value">{{val}}</p>