2015-05-21 8 views
0

У меня ниже ActionResultasp.net MVC обратный просмотр pagedlist

public ActionResult TheMostClickedEmailReport(int ID, int gonderim,int? page) 
     { 
      int pageIndex = page ?? 1; 
      int pagesize = 10; 

      MailingClickService mailingclickservice = new MailingClickService(); 
      TemplateLinkService tmpservice = new TemplateLinkService(); 
      int FirmID = (int)Session["FirmID"]; 
      var linkler = mailingclickservice.GetByCriteria(x => x.MailingID == ID && x.Gonderim == gonderim && x.Mailing.FirmUser.FirmID == FirmID).IslemSonucu.GroupBy(x => x.MailingEmail).ToPagedList(pageIndex, pagesize); 



      ViewBag.gonderim = gonderim; 
      ViewBag.MailingID = ID; 

      List<EmailLinkClickReport> emailcliklistreport = new List<EmailLinkClickReport>(); 
      if (linkler.Count() > 0) 
      { 

       foreach (var item in linkler) 
       { 
        EmailLinkClickReport emaillinkclick = new EmailLinkClickReport(); 

        emaillinkclick.Key = item.Key; 
        emaillinkclick.TotalClicksCount = item.Select(x => x.MailingEmail).Count(); 
        emailcliklistreport.Add(emaillinkclick); 
       } 


       return View(emailcliklistreport); 
      } 
      else 
      { 
       return RedirectToAction("MailingReport", "Report", new { id = ID, gonderim = gonderim }); 
      } 
     } 

linkler имеет 50 data.I выбрать 10 данных из linkler с помощью Еогеасп (пункт в linkler)

Я хочу выбрать 10 данных в v ar linkler = mailingclickservice.GetByCriteria(x => x.MailingID == ID && x.Gonderim == gonderim && x.Mailing.FirmUser.FirmID == FirmID).IslemSonucu.GroupBy(x => x.MailingEmail).ToPagedList(pageIndex, pagesize); часть

однако я не знаю, как я могу st linkler to IPagedList, возвращая представление?

Если я вернуться ниже код

return View(emailcliklistreport); 

, как показано ниже

return View(emailcliklistreport.ToPagedList(pageIndex,pagesize); 

это не логика для меня, потому что я возвращаюсь список дважды время

Что вы рекомендуете и предложить мне изменить мой код.

Как я могу вернуть ссылку для просмотра путем литья ToPagedList?

+0

Почему вы создаете ссылку для выпадающего списка, если вы не возвращаете его на представление? Храните его в IEnumerable, а затем возвращайте emailcliklistreport.ToPagedList (pageIndex, pagesize); к виду. –

ответ

1

ToPagedList должен быть последней операцией, выполняемой вами на вашем наборе данных, прежде чем возвращать ее на вид. Как бы то ни было, вы полностью отбрасываете PagedList и просто возвращаете List<EmailLinkClickReport> в представление.

Кроме того, для того, что стоит, здесь нет необходимости в цикле foreach, так как вы можете просто использовать метод LINQ Select для преобразования вашего набора данных. Попробуйте:

var linkler = mailingclickservice 
    .GetByCriteria(x => 
     x.MailingID == ID && 
     x.Gonderim == gonderim && 
     x.Mailing.FirmUser.FirmID == FirmID) 
    .IslemSonucu.GroupBy(x => x.MailingEmail) 
    .Select(x => new EmailLinkClickReport 
     { 
      Key = x.Key; 
      TotalClicksCount = x.Count(); 
     }) 
    .ToPagedList(pageIndex, pagesize); 

Я добавил либеральное расстояние, чтобы сделать его более удобным для чтения. Единственной новой частью является вызов Select. Также удалили Select(x => x.MailingEmail) джаз от TotalClickCounts, так как он ничего не делает, кроме как просто добавляет дополнительное время обработки.

+0

Большое спасибо – Beyto

Смежные вопросы