zoukankan      html  css  js  c++  java
  • linq分页组合查询

    一、linq高级查

    1.模糊查(字符串包含)

    1  public List<User> Select(string name)
    2     {
    3         return con.User.Where(r =>r.UserName.Contains(name)).ToList();
    4     }

    2.查开头(StartsWith,以XX开头)

     public List<User> Select(string name)
        {
            return con.User.Where(r => r.UserName.StartsWith(name)).ToList();
        }

    3.查结尾

     public List<User> Select(string name)
     {
            return con.User.Where(r => r.UserName.EndsWith(name)).ToList();
        }

    4.查出来的数组长度(个数)

    clist.Count()

    5.最大值:Max(r => r.price);

     public decimal? SelectMax()
        {
            return con.car.Max(r => r.price);
        }

    6.最小值:Min(r => r.price);

    public decimal? SelectMin()
        {
            return con.car.Min(r => r.price);
        }

    7.平均值:Average(r => r.price);

    public decimal? SelectAvg()
        {
            return con.car.Average(r => r.price);
        }

    8.求和:Sum(r => r.price);

     public decimal? SelectSum() { return con.car.Sum(r => r.price); } 

    9.排序:

    1、OrderBy 按升序对值进行排序。 
    2、OrderByDescending 按降序对值进行排序
    3、ThenBy 按升序执行次要排序。 
    4、ThenByDescending 按降序执行次要排序。
    (1)升序:OrderBy(r => r.price)

    1   public List<car> orderBy()
    2     {
    3         return con.car.OrderBy(r => r.price).ToList();
    4     }

    (2)降序:OrderByDescending(r => r.price)

      public List<car> orderBy()
        {
          
            return con.car.OrderByDescending(r => r.oil).ToList();
        }

    二、分页与组合查询

    1.分页

    1 public List<User> Select(int count, int number)
    2     {
    3         return con.User.Skip(count * (number - 1)).Take(count).ToList();
    4     }//这里的number是当前页数,count是每页的数据条数。skip,除去前多少条数据剩下的数据。take,取几条数据,这句话就是查询除去前多少条之后的剩下的数据的前多少条数据
    复制代码
     public int MaxPageNumber()
        {
            List<User> list = new UserData().Select();
            double nu = list.Count / (Pagecount * 1.0);//不要忘了取上线
            int num = Convert.ToInt32(Math.Ceiling(nu));
            return num;
        }//总页数
    复制代码
    复制代码
       void btn_next_Click(object sender, EventArgs e)
        {
            int NowNumber = Convert.ToInt32(Label2.Text) + 1;//下一页的页数
            if (NowNumber > MaxPageNumber())
            {
                return;
            }
            Repeater1.DataSource = new UserData().Select(Pagecount, NowNumber);
            Repeater1.DataBind();
    
            Label2.Text = NowNumber.ToString();
            DropDownList2.SelectedValue = NowNumber.ToString();
    
        }//下一页
    复制代码
     
     
    2. 组合查询
    void Button2_Click(object sender, EventArgs e)
        {
        using(WebDataContext con=new WebDataContext())//using比较适合用于个人开发,当花括号里的内容结束后内存自动释放,节省资源
    {
    var All = con.User.AsEnumerable();//AsEnumerale也是一个集合,不会占用系统空间,相当于只是把查询字符串给拼接起来,准备好,
    当执行ToList时才会进行查询
    if (TextBox1.Text.Trim().Length > 0)//说明这里填写了内容 { var namelist = con.User.Where(r => r.UserName.Contains(TextBox1.Text.Trim())); All = All.Intersect(namelist); } if (tb_sex.Text.Trim() == "" || tb_sex.Text.Trim() == "") { var sexlist = con.User.Where(r =>Convert.ToBoolean(r.Sex)==(tb_sex.Text.Trim()==""?true:false)); All = All.Intersect(sexlist); } if (tb_age.Text.Trim().Length > 0) { int nowyear = DateTime.Now.Year; try { int age= Convert.ToInt32(tb_age.Text.Trim()); int g = nowyear- age; DateTime d = Convert.ToDateTime(g.ToString() + "-1-1"); if (DropDownList3.SelectedValue == ">=") { var agelist = con.User.Where(r => Convert.ToDateTime(r.Birthday) >= d); All = All.Intersect(agelist); } else { DateTime dd = Convert.ToDateTime(g.ToString() + "-12-31"); var agelist = con.User.Where(r => Convert.ToDateTime(r.Birthday) <= dd); All = All.Intersect(agelist); } } catch{ } } Repeater1.DataSource = All; Repeater1.DataBind(); } }

    分页组合查(以下一页为例)

     void LinkButton2_Click(object sender, EventArgs e)//下一页
        {
            using (renuanDataContext ren = new renuanDataContext())
            {
                var all = ren.Users.AsEnumerable();
                if (chayhmtext.Text.Trim().Length > 0)
                {
                    var namelist = ren.Users.Where(r => r.Uname.Contains(chayhmtext.Text.Trim()));
                    all = all.Intersect(namelist);
                }
                if (chasexdrop.Text.Trim().Length > 0)
                {
                    var sexlist = ren.Users.Where(r => r.Usex.ToString() == chasexdrop.SelectedValue);
                    all = all.Intersect(sexlist);
                }
                if (chanationdrop.Text.Trim().Length > 0)
                {
                    var nationlist = ren.Users.Where(r => r.Unation.ToString() == chanationdrop.Text);
                    all = all.Intersect(nationlist);
                }
                count2.Text = Math.Ceiling(all.Count() / (countnum * 1.0)).ToString();//总页数
                int page= Convert.ToInt32(count1.Text) + 1;//点击之后的页数
               if(Convert.ToInt32(count1.Text)< Convert.ToInt32(count2.Text))//判断是否为最后一页
               {
                  count1.Text = page.ToString();
                  Repeater1.DataSource = all.Skip(countnum * (Convert.ToInt32(count1.Text) - 1)).Take(countnum).ToList();
             
                  Repeater1.DataBind();
               }//页数
            }//using
        }
  • 相关阅读:
    【codeforces 411B】Multi-core Processor
    【codeforces 314C】Sereja and Subsequences
    【hdu 1890】Robotic Sort
    【图灵杯 A】谷神的赌博游戏
    【图灵杯 J】简单的变位词
    【图灵杯 F】一道简单的递推题(矩阵快速幂,乘法模板)
    【图灵杯 E也即POJ 3368】简单的RMQ
    【codeforces 496E】Distributing Parts
    【codeforces 553C】Love Triangles
    Diffie-Hellman Key Exchange – A Non-Mathematician’s Explanation
  • 原文地址:https://www.cnblogs.com/lanrenqilanming/p/6040563.html
Copyright © 2011-2022 走看看