字段扩展:
因为Linq已经自动生成了一个对应表明的类来封装字段,所以扩展的时候要建立一个名字相同的类并在class后面加上partial进行扩展。扩展的时候this代表这个表,通过this可以.出这个表中的列名以及相关的外键表的表名。
Linq基本操作:
首先要创建Linq类,把相关的表拖进VS。
然后实例化Linq类,通过类名.表名.ToList();来获取所有数据。.AsQueryable();是获得这个方法但是还没有执行。
Linq高级查询:
通过类名.表名.where(r=>r.XXX)来进行条件查询。XXX表示点出来的列名,直接在后面.出方法写条件。where换成Count,Max,Min等方法也可以获得相应的结果。
分页:.Skip().Take()方法,前者是跳过的数据的条数,后者为获取的数据的条数。
获取交集:A.Intersect(B);A B都是通过不同条件查询出的数据,此方法可以连续调用无数个。
Linq增删改基本操作:
增加:首先要创建要添加的对象,然后调用.InsertOnSubmit(对象);方法注册,最后调用.SubmitChanges();方法提交。
删除:首先要查出来要删除的对象,然后调用.DeleteOnSubmit(对象)方法注册,最后调用.SubmitChanges();方法提交。
修改:首先要查出来要修改的对象,然后把修改后的数据赋给相应的属性,最后调用.SubmitChanges();方法提交。
Linq查询分页小练习:
HTML界面:
1 <body> 2 <form id="form1" runat="server"> 3 <table> 4 <tr> 5 <td>学生编号</td> 6 <td>学生姓名</td> 7 <td>民族</td> 8 <td>生日</td> 9 <td>科目</td> 10 <td>成绩</td> 11 </tr> 12 <asp:Repeater ID="Repeater1" runat="server"> 13 <ItemTemplate> 14 <tr> 15 <td><%#Eval("Scode") %></td> 16 <td><%#Eval("Sname") %></td> 17 <td><%#Eval("Snation") %></td> 18 <td><%#Eval("Sbirthday","{0:yyyy-MM-dd}") %></td> 19 <td><%#Eval("Ssubjectname") %></td> 20 <td><%#Eval("Score","{0:#.##}") %></td> 21 </tr> 22 </ItemTemplate> 23 </asp:Repeater> 24 </table> 25 学生姓名:<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><br /> 26 学生民族:<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox><br /> 27 学生生日:<asp:DropDownList ID="DropDownList1" runat="server" AppendDataBoundItems="True"> 28 <asp:ListItem>请选择</asp:ListItem> 29 </asp:DropDownList><asp:DropDownList ID="DropDownList2" runat="server" AppendDataBoundItems="True"> 30 <asp:ListItem>请选择</asp:ListItem> 31 </asp:DropDownList><asp:DropDownList ID="DropDownList3" runat="server" AppendDataBoundItems="True"> 32 <asp:ListItem>请选择</asp:ListItem> 33 </asp:DropDownList><br /> 34 所学科目:<asp:TextBox ID="TextBox4" runat="server"></asp:TextBox><br /> 35 考试成绩:<asp:DropDownList ID="DropDownList4" runat="server" AppendDataBoundItems="True"> 36 <asp:ListItem>请选择</asp:ListItem> 37 <asp:ListItem>></asp:ListItem> 38 <asp:ListItem><</asp:ListItem> 39 <asp:ListItem>=</asp:ListItem> 40 </asp:DropDownList><asp:TextBox ID="TextBox3" runat="server"></asp:TextBox><br /> 41 <asp:Button ID="Button1" runat="server" Text="查询" /><br /> 42 <asp:LinkButton ID="LinkButton1" runat="server">上一页</asp:LinkButton> 43 <asp:LinkButton ID="LinkButton2" runat="server">下一页</asp:LinkButton> 44 </form> 45 </body>
扩展字段:
1 public partial class Linq_Score 2 { 3 /// <summary> 4 /// 显示学号 5 /// </summary> 6 public string Scode 7 { 8 get { return this.Linq_Student.Student_Code; } 9 } 10 /// <summary> 11 /// 显示名字 12 /// </summary> 13 public string Sname 14 { 15 get { return this.Linq_Student.Student_Name; } 16 } 17 /// <summary> 18 /// 显示民族 19 /// </summary> 20 public string Snation 21 { 22 get { return this.Linq_Student.Linq_Nation.Nation_Name; } 23 } 24 /// <summary> 25 /// 显示生日 26 /// </summary> 27 public DateTime? Sbirthday 28 { 29 get { return this.Linq_Student.Student_Birthday; } 30 } 31 /// <summary> 32 /// 显示课程名称 33 /// </summary> 34 public string Ssubjectname 35 { 36 get { return this.Linq_Subject.Subject_Name; } 37 } 38 }
C#后台:
1 ChangYongDataContext CY = new ChangYongDataContext(); 2 protected void Page_Load(object sender, EventArgs e) 3 { 4 Button1.Click += Button1_Click;//点击查询 5 LinkButton1.Click += LinkButton1_Click;//点击上一页 6 LinkButton2.Click += LinkButton2_Click;//点击下一页 7 if (!IsPostBack) 8 { 9 Session["num"] = 0; 10 Session["Count"] = 3; 11 Session["Page"] = 0; 12 Repeater1.DataSource = Linq().Skip(Convert.ToInt32(Session["Page"]) * Convert.ToInt32(Session["Count"])).Take(Convert.ToInt32(Session["Count"])); 13 Repeater1.DataBind(); 14 for (int i = 1980; i <= DateTime.Now.Year; i++) 15 { 16 DropDownList1.Items.Add(i.ToString()); 17 } 18 for (int i = 1; i <= 12; i++) 19 { 20 DropDownList2.Items.Add(i.ToString()); 21 } 22 for (int i = 1; i <= 31; i++) 23 { 24 DropDownList3.Items.Add(i.ToString()); 25 } 26 LinkButton1.Enabled = false; 27 } 28 } 29 //下一页 30 void LinkButton2_Click(object sender, EventArgs e) 31 { 32 Session["Page"] = Convert.ToInt32(Session["Page"]) + 1; 33 Repeater1.DataSource = Linq().Skip(Convert.ToInt32(Session["Page"]) * Convert.ToInt32(Session["Count"])).Take(Convert.ToInt32(Session["Count"])); 34 Repeater1.DataBind(); 35 if ((Convert.ToInt32(Session["Page"]) + 1) >= Math.Ceiling((Linq().Count / 3.0))) 36 { 37 LinkButton2.Enabled = false; 38 } 39 LinkButton1.Enabled = true; 40 } 41 //上一页 42 void LinkButton1_Click(object sender, EventArgs e) 43 { 44 Session["Page"] = Convert.ToInt32(Session["Page"]) - 1; 45 Repeater1.DataSource = Linq().Skip(Convert.ToInt32(Session["Page"]) * Convert.ToInt32(Session["Count"])).Take(Convert.ToInt32(Session["Count"])); 46 Repeater1.DataBind(); 47 if (Convert.ToInt32(Session["Page"]) == 0) 48 { 49 LinkButton1.Enabled = false; 50 } 51 LinkButton2.Enabled = true; 52 } 53 //查询 54 void Button1_Click(object sender, EventArgs e) 55 { 56 Session["Page"] = 0; 57 Session["num"] = 1; 58 Repeater1.DataSource = Linq().Skip(Convert.ToInt32(Session["Page"]) * Convert.ToInt32(Session["Count"])).Take(Convert.ToInt32(Session["Count"])); 59 Repeater1.DataBind(); 60 if ((Convert.ToInt32(Session["Page"]) + 1) >= Math.Ceiling((Linq().Count / 3.0))) 61 { 62 LinkButton2.Enabled = false; 63 } 64 else 65 { 66 LinkButton2.Enabled = true; 67 } 68 } 69 /// <summary> 70 /// 查询语句 71 /// </summary> 72 /// <returns></returns> 73 public List<Linq_Score> Linq() 74 { 75 var list1 = CY.Linq_Score.AsQueryable(); 76 var list2 = CY.Linq_Score.AsQueryable(); 77 var list3 = CY.Linq_Score.AsQueryable(); 78 var list4 = CY.Linq_Score.AsQueryable(); 79 var list5 = CY.Linq_Score.AsQueryable(); 80 if (TextBox1.Text.Trim().Length > 0) 81 { 82 list1 = list1.Where(r => r.Linq_Student.Student_Name.Contains(TextBox1.Text.Trim())); 83 } 84 if (TextBox2.Text.Trim().Length > 0) 85 { 86 list2 = list2.Where(r => r.Linq_Student.Linq_Nation.Nation_Name.Contains(TextBox2.Text.Trim())); 87 } 88 if (Session["num"].ToString() == "1" && (DropDownList1.Text != "请选择" || DropDownList2.Text != "请选择" || DropDownList3.Text != "请选择")) 89 { 90 list3 = CY.Linq_Score.Where(r => r.Linq_Student.Student_Birthday.Value.Year.ToString() == DropDownList1.Text || r.Linq_Student.Student_Birthday.Value.Month.ToString() == DropDownList2.Text || r.Linq_Student.Student_Birthday.Value.Date.ToString() == DropDownList3.Text); 91 } 92 if (TextBox4.Text.Trim().Length > 0) 93 { 94 list4 = list4.Where(r => r.Linq_Subject.Subject_Name == TextBox4.Text.Trim()); 95 } 96 if (TextBox3.Text.Trim().Length > 0 && DropDownList4.Text != "请选择") 97 { 98 if (DropDownList4.Text == ">") 99 { 100 list5 = list5.Where(r => r.Score > Convert.ToDecimal(TextBox3.Text)); 101 } 102 else if (DropDownList4.Text == "<") 103 { 104 list5 = list5.Where(r => r.Score < Convert.ToDecimal(TextBox3.Text)); 105 } 106 else if (DropDownList4.Text == "=") 107 { 108 list5 = list5.Where(r => r.Score == Convert.ToDecimal(TextBox3.Text)); 109 } 110 } 111 var list = list1.Intersect(list2).Intersect(list3).Intersect(list4).Intersect(list5); 112 return list.ToList(); 113 }