Webform中linq to sql多条件查询(小练习)
多条件查询:逐条判断,从第一个条件开始判断,如果满足,取出放入集合,再从集合中查询第二个条件。。。
aspx代码:
1 <body> 2 <form id="form1" runat="server"> 3 4 <br /> 5 <asp:Label ID="Label1" runat="server" Text="关键字:"></asp:Label> 6 <asp:TextBox ID="Gjz" runat="server" Font-Size="12px"></asp:TextBox> 7 8 <asp:Label ID="Label2" runat="server" Text="价格:"></asp:Label> 9 <asp:TextBox ID="price1" runat="server" Font-Size="12px" Width="52px"></asp:TextBox> 10 11 <asp:Label ID="Label3" runat="server" Text="到"></asp:Label> 12 13 <asp:TextBox ID="price2" runat="server" Font-Size="12px" Width="52px"></asp:TextBox> 14 15 <asp:Button ID="select" runat="server" Text="查询" OnClick="select_Click" /> 16 <br /> 17 <br /> 18 <asp:Repeater ID="Repeater1" runat="server"> 19 <HeaderTemplate> 20 <table width="903" border="0" cellspacing="1" cellpadding="0" bgcolor="#6600FF"> 21 <tr style="height:25px;"> 22 <td width="260" bgcolor="#FFFFFF">名称</td> 23 <td width="160" bgcolor="#FFFFFF">上市时间</td> 24 <td width="160" bgcolor="#FFFFFF">油耗</td> 25 <td width="160" bgcolor="#FFFFFF">功率</td> 26 <td width="163" bgcolor="#FFFFFF">价格</td> 27 </tr> 28 </HeaderTemplate> 29 30 <ItemTemplate> 31 <tr style="height:25px;"> 32 <td bgcolor="#FFFFFF"><%#Eval("Name") %></td> 33 <td bgcolor="#FFFFFF"><%#Eval("Time","{0:yyyy年MM月dd日}") %></td> 34 <td bgcolor="#FFFFFF"><%#Eval("Oil") %></td> 35 <td bgcolor="#FFFFFF"><%#Eval("Powers") %></td> 36 <td bgcolor="#FFFFFF"><%#Eval("Price") %></td> 37 </tr> 38 39 </ItemTemplate> 40 41 <FooterTemplate> 42 43 </table> 44 45 </FooterTemplate> 46 47 48 </asp:Repeater> 49 </form> 50 </body>
aspx.cs代码:
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5 using System.Web.UI; 6 using System.Web.UI.WebControls; 7 8 public partial class test : System.Web.UI.Page 9 { 10 protected void Page_Load(object sender, EventArgs e) 11 { 12 if(!IsPostBack) 13 { 14 coenctDataContext _conext = new coenctDataContext(); 15 Repeater1.DataSource= _conext.Car; 16 Repeater1.DataBind(); 17 } 18 } 19 20 21 protected void select_Click(object sender, EventArgs e) 22 { 23 coenctDataContext _contest = new coenctDataContext(); 24 25 List<Car> list = _contest.Car.ToList(); 26 string key =Gjz.Text.ToString(); 27 28 //判断第一个条件是否为空,如果为空不操作,去判断第二个条件看是否满足;不为空,继续 继续查询 29 if (key != "") 30 { 31 list = list.Where(p => p.Name.Contains(key)).ToList(); 32 //关键字变原色,用foreach去查看集合中满足条件的字 33 foreach(Car data in list ) 34 { 35 string s = data.Name.Replace(key, "<span style ='color:red;'>" + key + "</span>"); 36 data.Name = s; 37 } 38 } 39 40 //判断第二个条件 41 string mi = price1.Text;//取text判断是否为空 42 string ma = price2.Text;//取text判断是否为空 43 44 //先判断第二个条件中,文本框中是否为空 45 if(mi !="" && ma != "") 46 { 47 decimal min = Convert.ToDecimal(price1.Text); 48 decimal max = Convert.ToDecimal(price2.Text); 49 50 list= list.Where(p=>p.Price.Value>=min && p.Price<=max).ToList(); 51 52 } 53 54 //指定数据源显示出来 55 Repeater1.DataSource = list; 56 Repeater1.DataBind(); 57 58 } 59 }