Linq 分页查询数据
来源:互联网 发布:端口数据包监听工具 编辑:程序博客网 时间:2024/04/26 18:43
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页面数据
- Linq 分页查询数据
- LINQ-分页数据查询
- Linq 之 分页查询数据
- linq查询集合并分页展示数据
- linq查询并分页
- Linq to XML 排序,分页,多节点查询数据
- LINQ模糊查询及分页
- Webform--LinQ 分页组合查询
- Linq 之查询数据
- 使用LINQ实现数据分页
- AspNetPager Linq 大数据 分页
- 使用LINQ实现数据分页
- MVC中使用Linq To Sql进行数据查询及分页
- Linq查询绑定给GridView,提示 数据源不支持服务器端的数据分页.
- 使用Linq查询数据进行分页时遇到的性能问题
- 分页 分组等Linq查询语句例子
- FineUI LINQ TO SQL 数据库分页查询
- linq的模糊查询和分页
- 【lizhi125】Cameyo - 简单几步轻松制作单文件绿色版软件!
- C++函数指针
- java虚拟机参数配置(转)
- 从C++到Objective-C
- SqlMapConfig.xml --- 在spring配置文件中自动加载的mybatis文件
- Linq 分页查询数据
- 利用PHP/MYSQL实现的简易微型博客
- Linux防火墙导致SercureCRT连接VMWare中RedHat Linux失败
- Objective-C研究院之集合对象(九)
- Java 设计模式 之 代理模式
- 在libevent中使用线程池
- java希尔排序
- hdu 1238 & POJ 1226 Substrings
- ASP.NET页面之间传递值解析