C# 中的 join 用法示例
程序员文章站
2024-03-03 16:10:58
...
示例代码:
private void btnQuery_Click(object sender, EventArgs e)
{
StringBuilder sb = new StringBuilder();//解决加不加 where 问题的两种方法的比较。
//加空格或者\n解决两个条件粘连的问题
//1、用where 1=1解决where该不该加的问题
sb.Append("select * from T_Customers where 1=1\n");//where 1=1 方法效率相对更低。因为如果不优化数据库时,where 1=1 可能会对数据库进行全体扫描。
if (cbQueryByName.Checked)
{
sb.Append("and Name like @name\n");
}
if (cbQueryByMobile.Checked)
{
sb.Append("and MobilePhone like @mobile\n");
}
if (cbQueryByCarNum.Checked)
{
sb.Append("and CarNum like @carnum\n");
}
MessageBox.Show(sb.ToString());
//2、用 join 解决where该不该加的问题
List<string> listWhere = new List<string>();
List<SqlParameter> listParameters = new List<SqlParameter>();
if (cbQueryByName.Checked)//判断复选框触发事件,是否选中该复选框。
{
listWhere.Add("Name like @name");
listParameters.Add(new SqlParameter("name","%"+txtQueryName.Text+"%"));
}
if (cbQueryByMobile.Checked)
{
listWhere.Add("MobilePhone like @mobile");
listParameters.Add(new SqlParameter("mobile", "%" + txtQueryMobile.Text + "%"));
}
if (cbQueryByCarNum.Checked)
{
listWhere.Add("CarNum like @carnum");
listParameters.Add(new SqlParameter("carnum", "%" + txtQueryCarNum.Text + "%"));
}
string sql = "select * from T_Customers\n";
if (listWhere.Count > 0)
{
string sqlWhere = string.Join(" and ", listWhere.ToArray());//string.Join 方法效率相对更高。
sql =sql+" where "+sqlWhere;
}
dataGridView1.DataSource = SqlHelper.ExecuteDataTable(sql, listParameters.ToArray());//.ToArray()的作用是转换为数组。
MessageBox.Show(sql);
}
上一篇: Android开发教程之电源管理详解