zoukankan      html  css  js  c++  java
  • C#-WebForm-组合查询(Queryable延迟查询、Intersect交集)、分页展示基础

    组合查询:

    方法一:Queryable<> 延迟查询

    其特点是:读到词句代码时不会立即执行,而是在进行数据绑定时执行
    优点:此期间可以进行添加查询条件,以减少数据库查询内容,来减少内存占用量

    //<查询>按钮
        void btn_select_Click(object sender, EventArgs e)
        {
            using (CarDataContext con = new CarDataContext())
            {
                //进行查询,将查询到的数据放入Queryable集合中
                IQueryable<Car> clist = con.Car.AsQueryable();
                //其特点是:读到词句代码时不会立即执行,而是在进行数据绑定时执行
                //优点:此期间可以进行添加查询条件,以减少数据库查询内容,来减少内存占用量
    
                //对每一个条件文本框进行判断,是否有限制条件
                string name = txt_name.Text.Trim();
                string brand = txt_brand.Text.Trim();
                string price = txt_price.Text.Trim();
    
                if (name.Length > 0)
                {
                    //如果有限制条件则添加查询条件
                    clist = clist.Where(r => r.Name.Contains(name.Trim()));
                }
    
                if (brand.Length > 0)
                {
                    clist = clist.Where(r => r.Brand.Contains(brand.Trim()));
                }
    
                if (price.Length > 0)
                {
                    string s = DropDownList1.SelectedValue;
                    if (s == "=")
                        clist = clist.Where(r => r.Price == Convert.ToDecimal(price));
                    if (s == ">=")
                        clist = clist.Where(r => r.Price >= Convert.ToDecimal(price));
                    if (s == "<=")
                        clist = clist.Where(r => r.Price <= Convert.ToDecimal(price));
                }
    
                //绑定数据-此时Queryable进行数据库查询并绑定数据
                Repeater1.DataSource = clist;
                Repeater1.DataBind();
            }

    方法二:Intersect 交集

    void Button2_Click(object sender, EventArgs e)
        {
            //先按照查询条件,将所有的数据分别查询全部出来
            using(mydbDataContext con = new mydbDataContext())
            {
                var nameList = con.car.AsQueryable();
                var brandList = con.car.AsQueryable();
                var priceList = con.car.AsQueryable();
    
                string name = txt_name.Text.Trim();
                string brand = txt_brand.Text.Trim();
                string price = txt_price.Text.Trim();
    
                if (name.Length > 0)
                {
                    nameList = nameList.Where(r => r.name.Contains(name));
                }
                if (brand.Length > 0)
                {
                    brandList = brandList.Where(r => r.brand.Contains(brand));
                }
                if (price.Length > 0)
                {
                    string aa = DropDownList1.SelectedValue;
                    if (aa == "=")
                        priceList = priceList.Where(r => r.price == Convert.ToDecimal(price));
                    if (aa == ">=")
                        priceList = priceList.Where(r => r.price >= Convert.ToDecimal(price));
                    if (aa == "<=")
                        priceList = priceList.Where(r => r.price <= Convert.ToDecimal(price));
                }
    
                //取集合的交集
                var allList = nameList.Intersect(brandList).Intersect(priceList);
    
                Repeater1.DataSource = allList;
                Repeater1.DataBind();
    
            }
        }

    分页展示:

    Repeater1.DataSource = clist.Skip(Count1).Take(Count2);

    Repeater1.DataBind();

    int AllDataCout = clist.Count();

    int Count1——跳过多少条数据    int Count2——取多少条数据  AllDataCout ——查询出来的数据一共多少条

  • 相关阅读:
    甲方提供核心jar包,添加到本地maven仓库
    Flexigrid详解
    在idea中使用CheckStyle来规范代码
    对List集合中的对象进行按某个属性排序
    Layui数据表格总结篇
    jQuery入门看这一篇就够了
    JAVA常量类的实现方式
    HTML5和CSS3提高
    CSS高级技巧总结
    CSS入门总结
  • 原文地址:https://www.cnblogs.com/qq450867541/p/6384766.html
Copyright © 2011-2022 走看看