组合查询:

方法一: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 > )
{
//如果有限制条件则添加查询条件
clist = clist.Where(r => r.Name.Contains(name.Trim()));
} if (brand.Length > )
{
clist = clist.Where(r => r.Brand.Contains(brand.Trim()));
} if (price.Length > )
{
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 > )
{
nameList = nameList.Where(r => r.name.Contains(name));
}
if (brand.Length > )
{
brandList = brandList.Where(r => r.brand.Contains(brand));
}
if (price.Length > )
{
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 ——查询出来的数据一共多少条

C#-WebForm-组合查询(Queryable延迟查询、Intersect交集)、分页展示基础的更多相关文章

  1. Mybatis3.1-[tp_36-37]-_映射文件_select_resultMap关联查询__分步查询传递多列值&fetchType_discriminator鉴别器

    _分步查询传递多列值&fetchType_discriminator鉴别器 笔记要点出错分析与总结 Department.java bean public class Department { ...

  2. 关系数据库SQL之高级数据查询:去重复、组合查询、连接查询、虚拟表

    前言 接上一篇关系数据库SQL之基本数据查询:子查询.分组查询.模糊查询,主要是关系型数据库基本数据查询.包括子查询.分组查询.聚合函数查询.模糊查询,本文是介绍一下关系型数据库几种高级数据查询SQL ...

  3. 【知识库】-数据库_MySQL之高级数据查询:去重复、组合查询、连接查询、虚拟表

    简书作者:seay 文章出处: 关系数据库SQL之高级数据查询:去重复.组合查询.连接查询.虚拟表 回顾:[知识库]-数据库_MySQL之基本数据查询:子查询.分组查询.模糊查询 Learn [已经过 ...

  4. 【SQL查询】集合查询之INTERSECT

    [SQL查询]集合查询之INTERSECT 1  BLOG文档结构图 2  前言部分 2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~ ...

  5. LINQ延迟查询的例子

    //linq延迟查询.两次查询结果不同 List<string> l = new List<string>() { "aaa", "bbb&quo ...

  6. Linq中延迟查询和立即查询

    //立即查询 public static void NowExecute() { var results = new int[]{5,4,3,2,1,6,7,8,9,0 }; int i = 0; v ...

  7. LINQ学习系列-----2.3 迭代器带来的延迟查询

    此篇博文承接上一篇博文: LINQ学习系列-----2.2 迭代器 一.第一次执行                      废话不多说,上源码: 执行结果下图: 为什么会这样?其实原因很简单 fro ...

  8. MongoDB 组合多个条件查询($and、$in、$gte、$lte)

    一,问题描述 数据格式: id, timeStamp,count 条件1:查询 某个时间段 内的数据: timeStamp BETWEEN startTime AND endTime.比如 timeS ...

  9. LINQ中的"延迟查询"特性【转】

    本文转载自:LINQ中的"延迟查询"特性 详细了解“延迟查询”:C#学习笔记(八)—–LINQ查询之延迟执行 很多标准查询操作符的设计原型都是返回一个IEnumerable< ...

随机推荐

  1. MongoServerSettings Members

    The MongoServerSettings type exposes the following members. Constructors   Name Description MongoSer ...

  2. 23-python用BeautifulSoup用抓取a标签内所有数据

    1.获取子标签: thr_msgs = soup.find_all('div',class_=re.compile('msg'))   for i in thr_msgs:     print(i) ...

  3. 未能加载文件或程序集"xxxxxx"或它的某一个依赖项

    错误:未能加载文件或程序集“xxx”或它的某一个依赖项.试图加载格式不正确的程序. 原因分析:操作系统是64位的,但发布的程序引用了一些32位的ddl,所以出现了兼容性的问题. 解决方案:IIS——应 ...

  4. PolyCluster: Minimum Fragment Disagreement Clustering for Polyploid Phasing 多聚类:用于多倍体的最小碎片不一致聚类

    摘要 分型是计算生物学的一个新兴领域,在临床决策和生物医学科学中有着重要的应用. 虽然机器学习技术在许多生物医学应用中显示出巨大的潜力,但它们在分型中的用途尚未完全理解. 在本文中,我们研究了基于聚类 ...

  5. 全球数据库-->基金/管理产品-->分类/行业平均

    ETF分类 GIFS台湾注册基金 GIFS开放式分类 GIFS德国注册基金 GIFS意大利注册基金 GIFS新兴市场 GIFS新加坡保险连结 GIFS新加坡注册基金 GIFS日本 GIFS比利时注册基 ...

  6. Error generating final archive: Unable to get debug signature key

    在调试程序时,发生下面的错误: Error generating final archive: Unable to get debug signature key 解决办法: 删除下面的文件: C:\ ...

  7. C#使用互斥量(Mutex)实现多进程并发操作时多进程间线程同步操作(进程同步)的简单示例代码及使用方法

    本文主要是实现操作系统级别的多进程间线程同步(进程同步)的示例代码及测试结果.代码经过测试,可供参考,也可直接使用. 承接上一篇博客的业务场景[C#使用读写锁三行代码简单解决多线程并发写入文件时线程同 ...

  8. iOS密码输入框的实现

    [iOS密码输入框的实现] 就是一个UITextField,把属性 UITextField.secureTextEntry设置为Yes即可.此种UI效果为iOS默认效果.

  9. swoole集群 nginx配置

    nginx配置文件: upstream cat { server 192.168.149.133:9502 weight=5; server 192.168.149.134:9502 weight=5 ...

  10. 用Word2007写CSDN博客

    目前大部分的博客作者在用Word写博客这件事情上都会遇到以下3个痛点: 1.所有博客平台关闭了文档发布接口,用户无法使用Word,Windows Live Writer等工具来发布博客.使用Word写 ...