首页 > 代码库 > 2017-6-1 Linq表达式 Lambda 表达式

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=http://www.mamicode.com/‘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 表达式