2017-6-1 Linq表達式 Lambda 表達式
1.Linq:Linq to sql 類 高度集成化的數據庫訪問技術
使用Linq是應該註意的問題:
1.創建Linq連接後生成的dbml文件不要變動,生成的表不要碰,拖動表也會造成數據庫連接發生變動,需要重新保存.
2.屬性拓展的使用:添加一個新的類,不要在dbml中添加屬性拓展,一旦數據庫變動,屬性拓展類就會失效.
3.使用Linq獲取的數據都是?int,?string等?數據類型,意思是也有可能為空,這時候操作數據需要先把數據類型轉化成int,string等數據類型.
2.實體類:
添加一個Linq to sql 類 ----選擇要使用的數據庫---- 拖入要使用的表 就相當於實體類建完了。
如果進行屬性擴展,在App_Code下添加類,類名同表名一致。將該類在訪問修飾符後加上partial,將該類定為實體類的一部分
屬性擴展的代碼:
public partial class Users { public string SexStr { get { string aa = null; if(this._Sex!=null){ aa=Convert.ToBoolean(_Sex) ? "男" : "女"; }return aa; } } public string Bir { get { string bb = null; if (this.Birthday != null) { bb = Convert.ToDateTime(_Birthday).ToString("yyyy年MM月dd日"); } return bb; } }public string NationName { get { return Nation1.NationName; } } public string ClassName { get { return Class1.ClassName; } } }
3.數據訪問類:
不用書寫數據訪問類,直接在使用數據訪問類的地方用Linq進行訪問就行
using(stu0314DataClassesDataContext con = new stu0314DataClassesDataContext() ) { Repeater1.DataSource = con.Users.ToList(); Repeater1.DataBind(); }
con.Users.ToList();相當於訪問Users表中的全部數據,並將數據轉換成一個泛型集合
4.添加數據:
(1)添加數據之前先實例化出對象,(2)填充數據,(3)創建鏈接(4)添加到數據庫中
添加的方法:con.Users.InsertOnSumbit(對象); 執行要操作的方法:con.SubmitChanges();
Users uu = new Users(); uu.UserName = Text_Uname.Text; uu.PassWord = Text_pwd2.Text; uu.NikeName = Text_Nike.Text; if (Ra_Sex.Items[1].Selected) { uu.Sex = false; } else { uu.Sex = true; } uu.Birthday = Convert.ToDateTime( Text_Bir.Text); uu.Nation = Dr_Nation.SelectedValue; uu.Class = Dr_Cla.SelectedValue; con.Users.InsertOnSubmit(uu); con.SubmitChanges();
5.刪除數據:
刪除數據前要先查到這條數據再進行刪除操作
通過ids進行查詢這條數據返回一個對象
Users u = con.Users.Where(r=>r.ids.Tostring()==ids).FirstOrDefault();
where括號內接的是Lambda表達式r代表每一行數據,=>是基本格式 FirstOrDefault()返回第一條數據或者返還空
如果u不是空,則進行進行刪除。如果為空,返回的是null
con.Users.DeleteOnSubmit(對象);
con.SubmitChanges();
string aa = Request["id"]; using (stu0314DataClassesDataContext con = new stu0314DataClassesDataContext()) { Users u = con.Users.Where(r => r.ids.ToString() == aa).FirstOrDefault(); con.Users.DeleteOnSubmit(u); con.SubmitChanges(); Response.Redirect("Default.aspx"); }
6.修改數據:
修改數據也是需要先查詢到要修改的數據,對數據進行重新賦值,修改
using(stu0314DataClassesDataContext con = new stu0314DataClassesDataContext() ) { string aa = Request["id"]; Users u = con.Users.Where(r=>r.ids.ToString()==aa ).FirstOrDefault(); u.UserName = Text_Uname.Text; u.PassWord = Text_pwd2.Text; u.NikeName = Text_Nike.Text; if (Ra_Sex.Items[1].Selected) { u.Sex = false; } else { u.Sex = true; } u.Nation = Dr_Nation.SelectedValue; u.Class = Dr_Cla.SelectedValue; con.SubmitChanges(); Response.Write("<script> var aa = confirm(‘修改成功!!‘); if(aa){window.location.href=‘Default.aspx‘}</script>"); }
7.Lambda表達式:
con.Users.Where(r=>r.ids.Tostring()==ids).FirstOrDefault();返回滿足條件的第一條數據或者返還空
如果是兩個條件查詢的話用&&接
con.Users.Where(r=>r.UserName=="zhangsan" && r.PassWord=="123").FirstOrDefault();
2017-6-1 Linq表達式 Lambda 表達式