简谈回顾多条件搜索查询。(适用于新手,老鸟飘…
2018-06-18 01:55:07来源:未知 阅读 ()
首先,创建一个这样的界面。
其次,我们弄个名字为Student的实体类.并在实体类里面弄个静态方法用于模拟数据。
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace 搜索测试 8 { 9 public class Student 10 { 11 public int ID { get; set; } 12 public string Name { get; set; } 13 public int Age { get; set; } 14 public double Height { get; set; } 15 16 //模拟数据 17 public static IEnumerable<Student> GetStudentData() 18 { 19 20 for (int i = 1; i <= 12; i++) 21 { 22 yield return new Student { 23 ID=i, 24 Name=string.Format("同学{0}号",i), 25 Age=i*10, 26 Height=160+i 27 }; 28 } 29 } 30 } 31 }
接下来在窗口加载的时候,我们首先把数据赋值给dataGridView。
//获取模拟数据 var data = Student.GetStudentData().ToList<Student>(); dataGridView1.DataSource = data;
---------------------------------------------接下来,我们写单击查询按钮的单击事件-----------------------------------------------------
代码如下。。。。。。。。。。。。。。
private void button1_Click(object sender, EventArgs e) { var data = Student.GetStudentData();//.AsQueryable<Student>(); if (!string.IsNullOrEmpty(textBox1.Text)) { data = data.Where(item => item.Name.Contains(textBox1.Text)); } if (!string.IsNullOrEmpty(textBox2.Text)) { data = data.Where(item => item.Age == int.Parse(textBox2.Text)); } if (!string.IsNullOrEmpty(textBox3.Text)) { data = data.Where(item => item.Height == Double.Parse(textBox3.Text)); } dataGridView1.DataSource = data.ToList(); }
对于上面这个查询,微软会自动帮我们拼接。这些条件,我们只需判断就可以了。
---------------------------------------------------------------------------拼接sql语句----------------------------------------------
而对于拼接sql语句,这里我就只是测试一下,弹出拼接的语句。代码如下:
private void button1_Click(object sender, EventArgs e) { var data = Student.GetStudentData().ToList<Student>(); List<string> where = new List<string>(); StringBuilder sb = new StringBuilder(" select * from T_Student "); // 存储参数 List<System.Data.SqlClient.SqlParameter> listParameters = new List<System.Data.SqlClient.SqlParameter>(); if (!string.IsNullOrEmpty(textBox1.Text)) { where.Add(string.Format(" Name={0} ", textBox1.Text)); listParameters.Add(new System.Data.SqlClient.SqlParameter("@Name", SqlDbType.NVarChar, 100) { Value = "%" + textBox1.Text.Trim() + "%" }); } if (!string.IsNullOrEmpty(textBox2.Text)) { where.Add(string.Format(" Age={0} ", textBox2.Text)); listParameters.Add(new System.Data.SqlClient.SqlParameter("@Age", SqlDbType.NVarChar, 100) { Value = "%" + textBox2.Text.Trim() + "%" }); } if (!string.IsNullOrEmpty(textBox3.Text)) { where.Add(string.Format(" Height={0} ", textBox3.Text)); listParameters.Add(new System.Data.SqlClient.SqlParameter("@Height", SqlDbType.NVarChar, 100) { Value = "%" + textBox3.Text.Trim() + "%" }); } dataGridView1.DataSource = data.ToList(); if (where.Count > 0) { sb.Append(" where "); sb.Append(string.Join(" and ", where)); } System.Data.SqlClient.SqlParameter[] pms = listParameters.ToArray(); MessageBox.Show(sb.ToString()); }
这样,不管用户多少个条件,只要用户筛选了,都会拼接起来。
好了。
本文到此结束。。。老鸟飘过哈。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 类中的函数重载 2019-09-23
- C++临时变量的回顾思考以及librdkafka设置回调函数注意点 2019-09-17
- 对C++中结构体的回顾 2019-06-14
- C++中多态的概念和意义 2019-05-24
- linux下条件变量使用笔记 2018-08-21
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash