组合查询
protected void Button1_Click(object sender, EventArgs e)
{
//默认查询所有,返回的是Table类型,转换成IQueryAble类型。
var query1 = this._Contex.car.AsQueryable();
var query2 = this._Contex.car.AsQueryable();
var query3 = this._Contex.car.AsQueryable();
//进一步判断查询,根据输入框的输入情况进一步完善查询
if (TextBox1.Text.Trim().Length > 0)
{
//因为最后要取三个查询的交集,如果文本框中填写了内容,根据填写内容进一步查询结果,
//并将原来的查询结果覆盖,如果文本框没有内容,保留原来的结果
//(保留原来结果的原因是,如果不保留,最后取交集,不会有结果)
query1 = query1.Where(r => r.name.Contains(TextBox1.Text));
}
if (DropDownList1.SelectedValue != "-1")
{
//因为最后要取三个查询的交集,如果下拉列表进行了选择,根据选择内容进一步查询结果,
//并将原来的查询结果覆盖,如果下拉框没有选择,保留原来的结果
//(保留原来结果的原因是,如果不保留,最后取交集,不会有结果)
query2 = query2.Where(r => r.brand == DropDownList1.SelectedValue);
}
if (TextBox2.Text.Trim().Length > 0)
{
//因为最后要取三个查询的交集,如果文本框中填写了内容,根据填写内容进一步查询结果,
//并将原来的查询结果覆盖,如果文本框没有内容,保留原来的结果
//(保留原来结果的原因是,如果不保留,最后取交集,不会有结果)
query3 = query3.Where(r => r.oil == Convert.ToDecimal(TextBox2.Text));
}
var query = query1.Intersect(query2).Intersect(query3);//取三个查询结果的交集
//指定数据源
Repeater1.DataSource = query;
//绑定数据
Repeater1.DataBind();
}