【问题标题】:Can I use join in Entity Framwork Pagination syntax?我可以在实体框架分页语法中使用 join 吗?
【发布时间】:2019-08-29 12:58:10
【问题描述】:

我想知道是否有人可以在这里提供帮助。我是实体框架的新手。我有 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;
            }

        }

如您所见,我有两种方法。我只想拥有GetAllByPagination。 非常感谢

【问题讨论】:

  • 您想要一个只返回Count 的方法,还是想要一个同时返回CountList 的方法?
  • @stom 我想把 count 和 list 一起作为一个列表。
  • 这一行似乎什么也没做,只是对数据库进行了一次浪费的额外调用:var transactionlist = context.BankDepositHistories.ToList();

标签: c# asp.net-mvc entity-framework pagination


【解决方案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 = result;
  resultVM.Count = result.Count();

            return resultVM;

        }
    }

调用方法:

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

int count = className.GetAllByPagination.Count;

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

希望有所帮助。

【讨论】:

  • 非常感谢,我不确定这是否是最佳答案,但它可能会很方便。
  • 欢迎,如果对你有帮助,请accept回答。
猜你喜欢
  • 1970-01-01
  • 2013-07-29
  • 1970-01-01
  • 1970-01-01
  • 2014-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多