2016-04-14 21 views
0

Ben 2 veritabanı tablolar düşünün .. 1 tablo farklı spor tutan:Yüklem Oluşturucu Sayı

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

ikinci tablo Spor tablonun ID tutan Tablo öylesine yabancı

anahtar

Adı -

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

TestDB Şimdi kullanıcı benim web uygulaması tablonun arama izin vermek için Predicate Builder kullanıyorum:

[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)); 
     } 

Ben filtrelemek veya .. 2 spor ile arama gerekir bu yüzden beyzbol veya basketbol ya vardır TestDB tüm kayıtları aramak istiyorsa o istediğim bu .. ama bu çalıştığınızda , hiçbir şey döndürmez, ama sadece 1 sporu ararsam işe yarıyor.

Herhangi bir yardım için teşekkür ederiz.

cevap

0

Ben çözüm:

List<int> lstSports = new List<int>(); 
     if(sport != null) 
     { 
      lstSports.Add(Convert.ToInt32(sport)); 
     } 
     if (sport1 != null) 
     { 
      lstSports.Add(Convert.ToInt32(sport1)); 
     } 
     if (lstSports.Count > 0) 
     { 
      foreach(int i in lstSports) 
      { 
       if(lstSports.IndexOf(i) == 0) 
       { 
        predicate = predicate.And(x => x.SportsID == i); 
       } 
       else 
       { 
        predicate = predicate.Or(x => x.SportsID == i); 
       } 
      } 
     }