c#Lazy懒加载详细解读及其例子

近期接到个需求要求不准使用分页控件使用滚动条的方式加载出来几十万条数据,还不能影响性能。
固把Lazy再次看了一遍

   static void Main(string[] args)
        {
   
            //不使用延迟加载例子
            //Stopwatch win7Stopwatch = Stopwatch.StartNew();
            //win7Stopwatch.Start();
            //Windows7 win7 = new Windows7(1);
            //win7Stopwatch.Stop();
            //Console.WriteLine($"win7时间{win7Stopwatch.Elapsed}]");


            //使用延迟加载例子
            //Stopwatch win10Stopwatch = Stopwatch.StartNew();
            //win10Stopwatch.Start();
            //Windows10 windows10 = new Windows10(1);
            //win10Stopwatch.Stop();
            //Console.WriteLine($"win10是否初始化[{windows10.SoftWares.IsValueCreated}]");
            //Console.WriteLine($"win10时间:[{win10Stopwatch.Elapsed}]");
            //List<SoftWare> SoftWares = windows10.SoftWares.Value;//此时使用的时候才会真正的去跑下面那个循环
            //Console.WriteLine($"win10是否初始化[{windows10.SoftWares.IsValueCreated}]");

            //思考懒加载加分页混合使用
            //不使用延迟加载例子加模拟分页
            Stopwatch win7Stopwatch = Stopwatch.StartNew();
            win7Stopwatch.Start();
            Windows7 win7 = new Windows7(1);
            win7Stopwatch.Stop();
            Console.WriteLine($"win7时间{win7Stopwatch.Elapsed}]");

            //使用延迟加载例子加模拟分页
            Stopwatch
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C#前端中实现懒加载Lazy Loading)可以避免一次性加载大量数据,从而提高应用程序的性能。在使用懒加载时,只有当需要访问某个数据时才会去加载它,而不是一次性加载所有数据。在SQL Server中,可以使用分页查询的方式实现懒加载。 以下是一个使用C#和SQL Server实现懒加载的示例代码: ``` //定义每页显示的记录数 int pageSize = 10; //定义当前页码 int pageIndex = 1; //查询总记录数 string countSql = "SELECT COUNT(*) FROM Table1"; int totalCount = ExecuteScalar(countSql); //计算总页数 int pageCount = (int)Math.Ceiling((double)totalCount / pageSize); //查询当前页数据 string dataSql = "SELECT * FROM (SELECT ROW_NUMBER() OVER (ORDER BY ID) AS RowNum, * FROM Table1) AS T WHERE T.RowNum BETWEEN @StartIndex AND @EndIndex"; int startIndex = (pageIndex - 1) * pageSize + 1; int endIndex = pageIndex * pageSize; SqlParameter[] parameters = { new SqlParameter("@StartIndex", startIndex), new SqlParameter("@EndIndex", endIndex) }; DataTable dt = ExecuteDataTable(dataSql, parameters); //绑定数据 GridView1.DataSource = dt; GridView1.DataBind(); ``` 在上述代码中,首先定义了每页显示的记录数和当前页码,然后查询总记录数并计算总页数。接着使用分页查询的方式查询当前页数据,并使用参数化查询来避免SQL注入攻击。最后将查询结果绑定到GridView控件上。 需要注意的是,上述代码中的ExecuteScalar和ExecuteDataTable方法需要根据实际情况进行实现。另外,在实际应用中,可以通过异步加载数据的方式来进一步提高性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值