Linq to sql实现简单查询和分页

   最近跟着做高效平台的项目,在积累项目经验的同时也吸收了不少新的知识,其中很让我欣喜的是居然可以不用写SQL语句就能操作数据库,对于SQL语句经常出问题的编程人员来讲毫无疑问真是雪中送炭呀。此处的“炭”就是linq to sql啦。

1   什么是Linq to sql


    Linq to sql是Linq(.NET语言集成查询)的一部分,用于以对象形式管理关系数据,并提供了丰富的查询功能,它和Linq to xml、Linq to objects、Linq to dataset、Linq to entities等组成了强大的LINQ。


2   Linq to sql的优点


   在学习Linq To Sql之前,我们一般通过把sql语句形成一个string,然后通过ado.net传给sql server,得到返回的结果集。那么这里的缺陷就是,如果我们sql语句写的有问题,只有到运行时才知道。而且并不是所有的人都能很好的数据库。Linq To Sql的出现大大的改善了这一现象:Linq To SQl的推出,实质是事先为大家构架了数据访问层,让大家从烦琐的技术细节中解脱出来,把更多的精力放到业务逻辑以及code上,而不是数据库,加快了数据库应用程序的开发进度。


3  实例详解


    在linq to sql之前我们实现分页有2种方式:数据量大时用SQL语句进行分页,数据量相对较小时通过PagedDataSource实现分页,具体讲解请参考ASP.NET真假分页-真分页 和ASP.NET真假分页-假分页 。那么现在接下来让我们一起通过一个小实例来体验一下linq to sql 给我们带来的方便。


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class _Default : System.Web.UI.Page 
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            BinderToGridView(1,2);
        }
    }
    /// <summary>
    /// 通过LinQ技术实现分页数据的提取
    /// </summary>
    /// <param name="pageIndex">要显示的第几页数据</param>
    /// <param name="pageSize">每页可显示的数据条数</param>
    private void BinderToGridView(int pageIndex,int pageSize )
    {
        //获取DataContext--获取配置文件--当我们对LinQDB进行对象操作的时候,自动生成对应的SQL语句--OR映射
        //实例化对象
        LinQDBDataContext linqDB = new LinQDBDataContext();
        //OR映射,直接访问数据库linqDB内的表pet
        var result = linqDB.pet;

        //获取总页数
        //没有记录时,count=0,(pageSize-1)/pageSize=0,即共0页
        int pageTotal = (result.Count() + pageSize - 1) / pageSize;
        //给总页数绑定数据源
        this.DropDownList1 .DataSource =System .Linq .Enumerable .Range (1,pageTotal ).ToList <int>();

        //实现分页处理---跳过(pageIndex-1)*pageSize条记录,然后提取pageSize条记录
        this.GridView1 .DataSource =result.Skip((pageIndex -1)*pageSize ).Take(pageSize);
        //绑定第I页的数据显示
        this.DataBind ();
    }


    //}
    /// <summary>
    /// 同步更新显示不同页的数据
    /// </summary>
    /// <param name="sender">动态变化的要显示的页码数</param>
    /// <param name="e">每页的数据条数</param>

    protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
    {
        BinderToGridView(int.Parse(this.DropDownList1.SelectedIndex.ToString()), 2);
    }
}


    


    相比较前两种查询和分页方式,linq to sql省去了繁琐的sql语句拼写,通过直接操作数据库中的表大大降低了工作量。分页显示一个页面即可实现,还记得当初为了实现真分页查了好多资料,真正实现的时候很开心,一下子豁然开朗的感觉,现在才知道原来还有更简单的方法。所以,知识是学不尽的,每个阶段的存在都有它的意义,也正是通过跟前两个的比较才体现出了它的简单,也才能真的体会到简单在了哪些地方。这就是积累的价值!

   


你可能感兴趣的:(Linq to sql实现简单查询和分页)