前台代码:

        名称:<asp:TextBox ID="Textname" runat="server"></asp:TextBox>
油耗:<asp:TextBox ID="Textoil" runat="server"></asp:TextBox>
马力:<asp:TextBox ID="Textpowers" runat="server"></asp:TextBox>
<asp:Button ID="btncha" runat="server" Text="查询" /><br /><br />
当前第[<asp:Label ID="lb_now" runat="server" Text=""></asp:Label>]页,共[<asp:Label ID="lb_all" runat="server" Text=""></asp:Label>]页
<asp:LinkButton ID="btnfirst" runat="server">首页</asp:LinkButton>
<asp:LinkButton ID="btn_prev" runat="server">上一页</asp:LinkButton> <asp:LinkButton ID="btn_next" runat="server">下一页</asp:LinkButton>
<asp:LinkButton ID="btnlast" runat="server">末页</asp:LinkButton>
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="true"></asp:DropDownList>

CarDA:数据访问类,

mydbDataContext con = new mydbDataContext();
         public List<Car> Select()//查询表所有数据
            {
             return con.Car.ToList();
            }

 public List<Car> Selectname(string n)//查名称的方法
{
return con.Car.Where(r => r.Name.Contains(n)).ToList();
}
public List<Car> Selectoil(decimal o)//查油耗的方法
{
return con.Car.Where(r => r.Oil == o).ToList();
}
public List<Car> Selectpow(int p)//查马力的方法
{
return con.Car.Where(r => r.Powers == p).ToList();
} public List<Car> Fenye(List<Car> list, int s, int t)//查分页的方法s是几条数据,t是几页
{
List<Car> li = con.Car.ToList();//查到所有数据
return li.Intersect(list).Skip(s * t).Take(t).ToList();
}

后台代码:

  int pagenum = ;//每页显示三页
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Repeater1.DataSource = new CarDA().Select().Take(pagenum);
Repeater1.DataBind();
lb_now.Text = "";//定义打开显示第一页
lb_all.Text = Math.Ceiling(Convert.ToDouble(new CarDA().Select().Count) / pagenum).ToString();//上限 最大页数 总条数÷一页显示的条数= 总共的页数 for (int i = ; i <= Convert.ToInt32(lb_all.Text); i++)
{
ListItem li = new ListItem(i.ToString(), i.ToString());
DropDownList1.Items.Add(li);//跳转
}
} btncha.Click += btncha_Click;//查询 btn_prev.Click += btn_prev_Click;//上一页
btn_next.Click += btn_next_Click;//下一页
btnfirst.Click += btnfirst_Click;//首页
btnlast.Click += btnlast_Click;//末页
DropDownList1.SelectedIndexChanged += DropDownList1_SelectedIndexChanged;//跳转
} void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{//跳转 int n = Convert.ToInt32(DropDownList1.SelectedItem.Text);//获取索引最小的选定向 lb_now.Text = n.ToString();//当前页数
CarDA ca = new CarDA();
List<Car> list = ca.Select(); if (Textname.Text != "")
{
List<Car> list1 = ca.Selectname(Textname.Text);
list = list.Intersect(list1).ToList();
}
if (Textoil.Text != "")
{
List<Car> list1 = ca.Selectoil(Convert.ToDecimal(Textoil.Text));
list = list.Intersect(list1).ToList();
}
if (Textpowers.Text != "")
{
List<Car> list1 = ca.Selectpow(Convert.ToInt32(Textpowers.Text));
list = list.Intersect(list1).ToList();
} lb_all.Text = Math.Ceiling(Convert.ToDouble(list.Count) / pagenum).ToString();
Repeater1.DataSource = ca.Fenye(list, (Convert.ToInt32(lb_now.Text) - ), pagenum);
Repeater1.DataBind();
} void btnlast_Click(object sender, EventArgs e)
{//末页
CarDA ca = new CarDA();
List<Car> list = ca.Select(); if (Textname.Text != "")
{
List<Car> list1 = ca.Selectname(Textname.Text);
list = list.Intersect(list1).ToList();
}
if (Textoil.Text != "")
{
List<Car> list1 = ca.Selectoil(Convert.ToDecimal(Textoil.Text));
list = list.Intersect(list1).ToList();
}
if (Textpowers.Text != "")
{
List<Car> list1 = ca.Selectpow(Convert.ToInt32(Textpowers.Text));
list = list.Intersect(list1).ToList();
}
lb_now.Text = Math.Ceiling(Convert.ToDouble(list.Count) / pagenum).ToString();
lb_all.Text = Math.Ceiling(Convert.ToDouble(list.Count) / pagenum).ToString();
Repeater1.DataSource = ca.Fenye(list, (Convert.ToInt32(lb_now.Text) - ), pagenum);
Repeater1.DataBind();
} void btnfirst_Click(object sender, EventArgs e)
{//首页
lb_now.Text = "";
CarDA ca = new CarDA();
List<Car> list = ca.Select(); if (Textname.Text != "")
{
List<Car> list1 = ca.Selectname(Textname.Text);
list = list.Intersect(list1).ToList();
}
if (Textoil.Text != "")
{
List<Car> list1 = ca.Selectoil(Convert.ToDecimal(Textoil.Text));
list = list.Intersect(list1).ToList();
}
if (Textpowers.Text != "")
{
List<Car> list1 = ca.Selectpow(Convert.ToInt32(Textpowers.Text));
list = list.Intersect(list1).ToList();
} lb_all.Text = Math.Ceiling(Convert.ToDouble(list.Count) / pagenum).ToString();
Repeater1.DataSource = ca.Fenye(list, (Convert.ToInt32(lb_now.Text) - ), pagenum);
Repeater1.DataBind(); } void btn_next_Click(object sender, EventArgs e)
{//下一页 int a =Convert.ToInt32( lb_now.Text)+;每点一下加1 CarDA ca = new CarDA();
List<Car> list = ca.Select(); if (Textname.Text != "")
{
List<Car> list1 = ca.Selectname(Textname.Text);
list = list.Intersect(list1).ToList();
}
if (Textoil.Text != "")
{
List<Car> list1 = ca.Selectoil(Convert.ToDecimal(Textoil.Text));
list = list.Intersect(list1).ToList();
}
if (Textpowers.Text != "")
{
List<Car> list1 = ca.Selectpow(Convert.ToInt32(Textpowers.Text));
list = list.Intersect(list1).ToList();
}
lb_now.Text = a.ToString();//让现在的页数显示+1之后的数据
lb_all.Text = Math.Ceiling(Convert.ToDouble(list.Count) / pagenum).ToString();
Repeater1.DataSource = ca.Fenye(list, (Convert.ToInt32(lb_now.Text) - ), pagenum);
Repeater1.DataBind(); } void btn_prev_Click(object sender, EventArgs e)
{//上一页
if (Convert.ToInt32(lb_now.Text) > )判断是否可以点上一页
{
int nownum = Convert.ToInt32(lb_now.Text) - ;
CarDA ca = new CarDA();
List<Car> list = ca.Select(); if (Textname.Text != "")
{
List<Car> list1 = ca.Selectname(Textname.Text);
list = list.Intersect(list1).ToList();
}
if (Textoil.Text != "")
{
List<Car> list1 = ca.Selectoil(Convert.ToDecimal(Textoil.Text));
list = list.Intersect(list1).ToList();
}
if (Textpowers.Text != "")
{
List<Car> list1 = ca.Selectpow(Convert.ToInt32(Textpowers.Text));
list = list.Intersect(list1).ToList();
} Repeater1.DataSource = ca.Fenye(list, (nownum - ), pagenum);
Repeater1.DataBind();
lb_now.Text = nownum.ToString();
}
} void btncha_Click(object sender, EventArgs e)
{//查询
lb_now.Text = "";
int nownum = Convert.ToInt32(lb_now.Text);
CarDA ca = new CarDA();
List<Car> list = ca.Select(); if (Textname.Text != "")
{
List<Car> list1 = ca.Selectname(Textname.Text);
list = list.Intersect(list1).ToList();
}
if (Textoil.Text != "")
{
List<Car> list1 = ca.Selectoil(Convert.ToDecimal(Textoil.Text));
list = list.Intersect(list1).ToList();
}
if (Textpowers.Text != "")
{
List<Car> list1 = ca.Selectpow(Convert.ToInt32(Textpowers.Text));
list = list.Intersect(list1).ToList();
}
lb_all.Text = Math.Ceiling(Convert.ToDouble(list.Count) / pagenum).ToString();
DropDownList1.Items.Clear();
for (int i = ; i <= Convert.ToInt32(lb_all.Text); i++)
{
ListItem li = new ListItem(i.ToString(), i.ToString());
DropDownList1.Items.Add(li);
}
Repeater1.DataSource = ca.Fenye(list, (nownum - ), pagenum);
Repeater1.DataBind();
}

LinQ的组合+分页的更多相关文章

  1. Linq 动态组合排序(Lambda)

    最近有个项目需要做一个排班的功能,需要对排班的数据按不同的规则进行排序:因为排序规则是动态变化的,所以不太适合放到数据库中(临时表)中处理: 所以考虑使用Linq的排序方式(按不同的条件判断条件组合排 ...

  2. linq to sql 分页技术

    昨天在用LINQ写分页的时候碰到一个很奇怪的问题:翻页的时候,有的数据会莫名其妙地消失,查了半个多小时才发现问题所在,其实是一个很细节的地方. 数据表如下: LINQ分页的实现是: var artic ...

  3. asp.net LINQ实现数据分页

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...

  4. linq 动态组合条件

    http://www.albahari.com/nutshell/predicatebuilder.aspx Dynamically Composing Expression Predicates S ...

  5. 使用 Parallel LINQ 进行数据分页

    a)   第一种[耗时11~18s],这种查询方式并不是很优化,但是目前也没有想到更好的方式,除了创建一张中间表,是不是可以使用[全文索引]? SELECT * FROM ( SELECT  ROW_ ...

  6. Spring Data JPA 复杂/多条件组合分页查询

    推荐视频: http://www.icoolxue.com/album/show/358 public Map<String, Object> getWeeklyBySearch(fina ...

  7. repeater+aspnetpager 组合分页

    页面代码 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="TF_Product. ...

  8. mybatis动态条件组合分页查询

    一.动态条件处理 需要使用mybatis的动态sql 1 <select id="selectItemByCondition" parameterType="com ...

  9. Entity Framework Linq 动态组合where条件

    public static class PredicateExtensions { public static Expression<Func<T, bool>> True&l ...

随机推荐

  1. correlation filters in object tracking2

    http://www.cnblogs.com/hanhuili/p/4281077.html Correlation Filter in Visual Tracking系列二:Fast Visual ...

  2. linux下配置ip地址四种方法(图文方法)

    主要是用第四种方法 (1)Ifconfig命令  第一种使用ifconfig命令配置网卡的ip地址.此命令通常用来零时的测试用,计算机启动后 ip地址的配置将自动失效.具体用法如下.Ipconfig  ...

  3. 那些年蹚过的坑(c++)

    1 main中的参数 尽量用英文双引号括起来,否则可能会出现字符串截断的情况(linux gcc 4.4 不加英文引号的话,遇到英文;会丢弃;后面的部分) 2 包含ipv6地址结构体(in6_addr ...

  4. LCA

    2016.1.28 LCA,就是最近公共祖先,这里介绍倍增的算法. 首先我们要预处理,设f[i][j]为编号为i的节点的2j级祖先,所谓2j级祖先,就是从i节点开始往树的上层数2j个节点.如下图所示 ...

  5. sax/dom/jdom/dom4j的区别

    sax/dom/jdom/dom4j的区别[转] 博客分类: xml   网上能够查到很多的4种解析方式的区别,我再做一下摘录和总结,顺带给自己做个备份. SAX sax分析器在对xml文档进行分析时 ...

  6. css狂记

    接着上一篇 html狂记,同样是DIV+CSS传统站点开发,同样只是收集.整理... CSS 背景属性(Background) 属性 描述 CSS background 在一个声明中设置所有的背景属性 ...

  7. 哆啦A梦 canvas

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

  8. CentOS7.2部署OpenStack(一)—环境准备

    1.系统环境 # uname -r 3.10.0-327.el7.x86_64 # cat /etc/redhat-release CentOS Linux release 7.2.1511 (Cor ...

  9. 二模12day1解题报告

    T1.笨笨与电影票(ticket) 有n个1和m个0,求每个数前1的个数都大于等于0的个数的排列数. 非常坑的一道题,推导过程很烦.首先求出所有排列数是 C(n+m,m),然后算不合法的个数. 假设存 ...

  10. STL之序列容器vector

    首先来看看vector的模板声明: template <class T, class Alloc = allocator<T>> class vector { //… }; v ...