Linq 分页查询数据

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

public partial class test6_LinqDefault2 : System.Web.UI.Page
{

    //新总订单数
    public double spOrderNums = 0;
    //成功订单
    public double SuccessOrderNums = 0;

    protected void Page_Load(object sender, EventArgs e)
    {
        #region 功能测试1
        //this.Repeater1.DataSource = this.GetList();
        //this.Repeater1.DataBind();
        #endregion
        testDataTable2();
    }

    #region 功能测试1
    public IList<Student> GetList()
    {
        IList<Student> list = new List<Student>();
        list.Add(new Student("张三", 22));
        list.Add(new Student("李四", 25));
        return list;
    }


    public class Student
    {
        public Student(string _Name, int _Age)
        {
            this.Name = _Name;
            this.Age = _Age;
        }
        public string Name
        {
            set;
            get;
        }
        public int Age
        {
            set;
            get;
        }
    }

    public class order
    {
        public double totalNum { get; set; }
        public double goodPercent { get; set; }
        public double generalPercent { get; set; }
        public double badPercent { get; set; }
    }
    #endregion


    void testDataTable2()
    {
        DataTable dtA = new DataTable();
        dtA.Columns.Add("id", typeof(int));
        dtA.Columns.Add("goodNum", typeof(double));
        dtA.Columns.Add("generalNum", typeof(double));
        dtA.Columns.Add("badNum", typeof(double));

        //dtA.Rows.Add(1, "20", "30", "50");
        //dtA.Rows.Add(2, "90", "3", "2");
        dtA.Rows.Add(3, "1", "5", "10");
        dtA.Rows.Add(4, "10", "32", "2");
        dtA.Rows.Add(5, "66", "55", "44");

        DataTable dtB = dtA.Clone();
        dtB.Rows.Add(1, "32", "43", "21");
        dtB.Rows.Add(2, "65", "63", "5");
        dtB.Rows.Add(3, "4", "54", "5");
        dtB.Rows.Add(4, "43", "44", "565");
        dtB.Rows.Add(5, "66", "55", "44");

        DataTable dtC = dtA.Clone();
        dtC.Rows.Add(1, "3", "2", "32");
        dtC.Rows.Add(2, "43", "63", "65");
        dtC.Rows.Add(3, "7", "9", "76");
        dtC.Rows.Add(4, "9", "67", "34");
        dtC.Rows.Add(5, "66", "55", "44");

        DataTable dtD = dtA.Clone();
        dtD.Columns.Add("totalNum", typeof(double));
        dtD.Columns.Add("goodPercent", typeof(double));
        dtD.Columns.Add("generalPercent", typeof(double));
        dtD.Columns.Add("badPercent", typeof(double));

        var dtAData=  from a in dtA.AsEnumerable() select a ;
        var dtBData = from b in dtB.AsEnumerable() select b;
        var dtCData = from c in dtC.AsEnumerable() select c;

        int aCount = dtAData.Count();
        int bCount = dtBData.Count();
        int cCount = dtCData.Count();

        #region 条数不够补0
        for (int i = 1; i <= aCount-bCount; i++)
        {
            //dtB.Rows.Add(bCount+i, "0", "0", "0");

            dtB.Rows.Add(0, "0", "0", "0");
        }

        for (int i = 1; i <= aCount - cCount; i++)
        {
            dtC.Rows.Add(0, "0", "0", "0");
        }
        #endregion 

        var fullJoinData = (from a in dtA.AsEnumerable()
                            join c in dtC.AsEnumerable() on a.Field<int>("id") equals c.Field<int>("id")
                            join b in dtB.AsEnumerable() on c.Field<int>("id") equals b.Field<int>("id")

                            let goodNum = a.Field<double>("goodNum")
                            let total1Score = a.Field<double>("goodNum") + a.Field<double>("generalNum") + a.Field<double>("badNum")
                            let good1percent = Math.Round(goodNum / total1Score, 2)

                            let goodNum2 = b.Field<double>("goodNum")
                            let total2Score = b.Field<double>("goodNum") + b.Field<double>("generalNum") + b.Field<double>("badNum")
                            let good2percent = Math.Round(goodNum2 / total2Score, 2)

                            let goodNum3 = c.Field<double>("goodNum")
                            let total3Score = c.Field<double>("goodNum") + c.Field<double>("generalNum") + c.Field<double>("badNum")
                            let good3percent = Math.Round(goodNum3 / total3Score, 2)

                            let goodlink = Math.Round((good1percent / good2percent - 1) * 100, 2)
                            let goodyear = Math.Round((good1percent / good3percent - 1) * 100, 2)

                            //where goodNum2 > 20
                            select new
                            {
                                id = a.Field<int>("id"),
                                goodNum = goodNum,
                                generalNum = a.Field<double>("generalNum"),
                                badNum = a.Field<double>("badNum"),
                                total1Score = total1Score,
                                good1percent = good1percent,

                                //s2=spOrderNums,

                                id2 = b.Field<int>("id"),
                                goodNum2 = goodNum2,
                                generalNum2 = b.Field<double>("generalNum"),
                                badNum2 = b.Field<double>("badNum"),
                                total2Score = total2Score,
                                good2percent = good2percent,

                                id3 = c.Field<int>("id"),
                                goodNum3 = goodNum3,
                                generalNum3 = c.Field<double>("generalNum"),
                                badNum3 = c.Field<double>("badNum"),
                                total3Score = total3Score,
                                good3percent = good3percent,

                                goodlink = goodlink,
                                goodyear = goodyear,
                            })
                           // .Skip(supplierPager.CurrentPageIndex-1 ).Take(supplierPager.CurrentPageIndex);
                            //.Skip((supplierPager.CurrentPageIndex - 1) * supplierPager.PageSize).Take(supplierPager.PageSize * supplierPager.CurrentPageIndex);
        .Skip((supplierPager.CurrentPageIndex - 1) * supplierPager.PageSize).Take(supplierPager.PageSize);
                            //.Skip(4).Take(5);

        this.Repeater1.DataSource = fullJoinData;
        this.Repeater1.DataBind();

        //supplierPager.PageSize;
        supplierPager.RecordCount = dtAData.Count();

    }

    #region 强类型强转换
    public static class Binder<TEntity> where TEntity : class
    {
        public static TResult Eval<TResult>(System.Web.UI.Page p, Func<TEntity, TResult> func)
        {
            return func((TEntity)p.GetDataItem());
        }
    }
    #endregion
    protected void supplierPager_PageChanged(object sender, EventArgs e)
    {
        testDataTable2();
    }
}

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="LinqDefault2.aspx.cs" Inherits="test6_LinqDefault2" %>
<%@ Register assembly="AspNetPager" namespace="Wuqi.Webdiyer" tagprefix="webdiyer" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Repeater ID="Repeater1" runat="server">
             <ItemTemplate>
                开始
                满意:<%#Eval("goodNum")%>
                一般:<%#Eval("generalNum")%>
                不满意:<%#Eval("badNum")%>
                满意度小计:<%#Eval("total1Score")%>
                满意度百分比:<%#Eval("good1percent")%>
                
                满意:<%#Eval("goodNum2")%>
                一般:<%#Eval("generalNum2")%>
                不满意:<%#Eval("badNum2")%>
                满意度小计:<%#Eval("total2Score")%>
                满意度百分比:<%#Eval("good2percent")%>
                
                满意:<%#Eval("goodNum3")%>
                一般:<%#Eval("generalNum3")%>
                不满意:<%#Eval("badNum3")%>
                满意度小计:<%#Eval("total3Score")%>
                满意度百分比:<%#Eval("good3percent")%>
                
                满意环比值:<%# Eval("goodlink")%>%
                满意同比值:<%# Eval("goodyear")%>%
                结束
                <br />
             </ItemTemplate>
         </asp:Repeater>
         <webdiyer:AspNetPager ID="supplierPager" runat="server" Direction="LeftToRight" 
             FirstPageText="第一页" PageSize="2" 
          HorizontalAlign="left" LastPageText="最后一页" NextPageText="下一页" PrevPageText="上一页"
          Width="100%" CenterCurrentPageButton="True" CustomInfoHTML="当前页码为 %CurrentPageIndex% 总页数 %PageCount% 共 %RecordCount% 条记录"
          CustomInfoTextAlign="Left" NumericButtonCount="8" PageIndexBoxType="DropDownList"
          ShowCustomInfoSection="Right" AlwaysShow="True" 
             onpagechanged="supplierPager_PageChanged">
        </webdiyer:AspNetPager>
    </div>
    </form>
</body>
</html>


如果想看3页面

        dtA.Rows.Add(1, "20", "30", "50");
        dtA.Rows.Add(2, "90", "3", "2");

注释取消


我的分页设置 页长 2,

supplierPager.RecordCount = dtAData.Count();  页总数

页码 = 页总数 / 页长


第一页数据


第2页面数据


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值