gpt4 book ai didi

c# - 如何在列表上应用分页

转载 作者:可可西里 更新时间:2023-11-01 08:03:29 25 4
gpt4 key购买 nike

我有一个函数可以从数据库中检索数据并将其添加到列表中。我的列表已准备就绪并显示数据,但我想对该列表进行分页,以便每页显示有限的记录。但不知道该怎么做。
这是我的数据层函数代码。

 public List<demodto> executereader(List<demodto> Ldemo,SqlCommand cmdshow, string tablename)
{
SqlConnection cn;
try
{
cn = this.getconnection();

cmdshow.Connection = cn;
cn.Open();

SqlDataReader rd = cmdshow.ExecuteReader();
while (rd.Read())
{
demodto dtoobj1 = new demodto();
dtoobj1.ID = Convert.ToInt32(rd[0].ToString());
dtoobj1.Name = rd[1].ToString();
dtoobj1.PhNo = Convert.ToInt32(rd[2].ToString());
dtoobj1.Address = rd[3].ToString();
dtoobj1.Gender = rd[4].ToString();
dtoobj1.Email = rd[5].ToString();
dtoobj1.Emptype = rd[6].ToString();

Ldemo.Add(dtoobj1);

}
cn.Close();
return Ldemo;
}
catch (Exception ex2)
{
throw new DataException("error....." + ex2.Message);

}

}

这是针对 DTO 类的..

 public class demodto
{
public Int32 ID{get;set;}
public string Name{get;set;}
public Int32 PhNo { get; set; }
public string Address{get;set;}
public string Gender { get; set; }
public string Email { get; set; }
public string Emptype { get; set; }
}

请帮帮我。谢谢。

最佳答案

您可以使用 LINQ 对列表进行分页,如下所示:

IList<demodto> GetPage(IList<demodto> list, int page, int pageSize) {
return list.Skip(page*pageSize).Take(pageSize).ToList();
}

例如,假设每个页面有 50 条记录。要获取第三页,请调用

IList<demodto> thirdPage = GetPage(dataList, 3, 50);

但是请注意,对内存中的数据应用分页没有什么意义:分页背后的想法是减少从数据库中检索数据所需的时间,并通过仅保留单个数据来节省一些内存页面,这不会发生在您的情况下,因为所有数据都是一次检索的。

为了使分页值得付出努力,您需要将其移动到数据库中。更改您的方法以接受页面大小和页数,并使用它们更改 SQL 以检索单个页面的列表。不要忘记强制对您的 sql 读取进行排序,否则相同的数据可能会出现在不同的页面上。您的 SQL 需要修改以支持分页。这取决于您的数据库。描述了 MS SQL Server 解决方案 in this answer .

关于c# - 如何在列表上应用分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21362144/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com