1. 程式人生 > >2017-6-1 Linq表達式 Lambda 表達式

2017-6-1 Linq表達式 Lambda 表達式

app sel 註意 cnblogs sna sql 修飾 onf str

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 表達式