Могу ли я использовать join в синтаксисе разбиения на страницы структуры объектов?

#c# #asp.net-mvc #entity-framework #pagination

#c# #asp.net-mvc #entity-framework #разбивка на страницы

Вопрос:

Мне было интересно, может ли кто-нибудь помочь здесь.Я новичок в Entity Framwork. У меня есть 2 разных запроса.Я хочу присоединиться к ним и получить 1. Вот мой код:

  public static List<BankDepositHistory> GetAllByPagination(int page ,int stepes)
        {

            page=page-1;

            using(MyketAdsEntities context = new MyketAdsEntities())
            {
                var transactionlist = context.BankDepositHistories.ToList();
                var start = page * stepes;
              var result=  context.BankDepositHistories.OrderByDescending(c=>c.AccountId)

                    //anny code that give me count as field
                    .Skip(start)
                    .Take(stepes)
                    .ToList();
                return (result);

            }
        }
        public static int GetCount()
        {
            using (MyketAdsEntities context = new MyketAdsEntities())
            {
                int count = context.BankDepositHistories.Count();
                return count;
            }

        }
  

Как вы видите, у меня есть 2 метода. Я просто хочу иметь GetAllByPagination.
Большое спасибо

Комментарии:

1. Вам нужен метод, который просто возвращает Count или вам нужен метод, который возвращает оба Count и List ?

2. @stom Я хочу, чтобы и количество, и список были объединены в виде списка.

3. Похоже, что эта строка ничего не делает, кроме как делает ненужный дополнительный вызов базы данных: var transactionlist = context.BankDepositHistories.ToList();

Ответ №1:

Предположим, у вас есть объект ниже, тогда настройка ниже должна работать.

 public BankDepositHistory
{

public string UserName {get;set}

//etc..

}
  

Создайте модель представления

 public class BankDepositHistoryVM
{

public List<BankDepositHistory> bankDetails {get;set;}

public int Count {get;set;}

}
  

Вернуть модель представления

  public static List<BankDepositHistoryVM> GetAllByPagination(int page ,int stepes)
    {

        page=page-1;

        using(MyketAdsEntities context = new MyketAdsEntities())
        {
            var transactionlist = context.BankDepositHistories.ToList();
            var start = page * stepes;
          var result=  context.BankDepositHistories.OrderByDescending(c=>c.AccountId)
                .Skip(start)
                .Take(stepes)
                .ToList();

  List<BankDepositHistoryVM> resultVM = new List<BankDepositHistoryVM>();

  resultVM.bankDetails = resu<
  resultVM.Count = result.Count();

            return resultVM;

        }
    }
  

Вызовите метод:

 List<BankDepositHistory> bankDetails = className.GetAllByPagination.bankDetails;

int count = className.GetAllByPagination.Count;

List<BankDepositHistoryVM> allDetails = className.GetAllByPagination();
  

Надеюсь, это поможет.

Комментарии:

1. Большое спасибо, я не уверен, что это лучший ответ, но это может быть удобно.

2. Добро пожаловать, если это помогло вам, пожалуйста, примите ответ.