5月,我们的纪念
费话不多说,主要是Linq中的Skip及Take这二个扩展方法
   int RecordCount = 0;
    int PageCount = 1;
    DataClassesDataContext data = new DataClassesDataContext();
    int SkipIndex = 0;
    private string _PageString = "";
    public string PageString
    {
        get {
            return _PageString;
        }
        set {
            _PageString = value;
        }
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        RecordCount = data.Orders.Count();  //得到记录数
        PageCount = (int)Math.Ceiling((decimal)RecordCount / 10);   //以10条记录为一页,计算总页码
        int page = 1;
        if (!string.IsNullOrEmpty(Request.QueryString["page"]))
            page = Convert.ToInt16(Request.QueryString["page"]);
        SkipIndex = (page-1) * 10;   //计算起始索引,以供后面的Skip扩展方法之用

        //拼接分页代码
        StringBuilder sb = new StringBuilder();
        for (int i = 1; i < PageCount; i++)
        {
            sb.AppendFormat(@" <a href=""?page={0}"">{0}</a> ",i);
        }
        _PageString = sb.ToString();
        bind();
    }
    void bind()
    {
        //奇妙的Linq表达式
        var q = (from c in data.Orders select new
                { CustomerID = c.CustomerID, ShipAddress=c.ShipAddress,ID = c.OrderID}
               ).Skip(SkipIndex).Take(10);  
        this.GridView1.DataSource = q;
        this.GridView1.DataBind();
    }

当显示的是第一页时,看linq表达式中为我们动态生成了什么样的语句:

SELECT TOP 10 [t0].[CustomerID], [t0].[ShipAddress], [t0].[OrderID] AS [ID]
FROM [dbo].[Orders] AS [t0]

是不是觉得非常熟悉?
相当Easy
Categories:   .Net 3.5 | linq
Tags:  
Actions:   Comments (5) |

Comments

1#

February 16 2008 , 11:20

Shawer

LINQ 很爽,DLINQ 某些方面感觉有些不爽,还是喜欢NHibernate,^___^。

Shawercn | Top

2#

April 23 2008 , 21:19

Andy

0 代码抄袭的把? 一个国外的人写过...当然,没有一点批评或不敬之意

Andycn | Top

3#

April 23 2008 , 21:47

techmango

不错,我也在学习这个!89

另外,博主,可以交换个友情链接吗?
我已经添加好了你的链接

站名是 铁芒网博
网址是 http://www.techmango.com/blog

techmangocn | Top

4#

April 23 2008 , 23:20

幻想曲

@Andy:
自己写的

幻想曲cn | Top

5#

April 23 2008 , 23:20

幻想曲

@techmango:
sorry,暂停交换链接

幻想曲cn | Top

Add comment



(Will show your Gravatar icon)  



  Country flag


[b][/b] - [i][/i] - [u][/u]- [quote][/quote]

:-/ ^_^ :d :o :kiss: :) :p :se: [yeah] :( :love: :han: :up: :cry: :zzz: o_o


申请链接请看这里