none
LINQ TO SQL使用后出现了两句我看不懂的语句,求解!感激! RRS feed

  • 问题

  • 在使用了LINQ TO SQL后发现的两个问题:
    1. 出现的h、c不知道从何而来作何解释,求详细解释,我把两句话单独提出来方便各位看,完整的代码在后面
    第一句:myuser = db.HotelUsers.Where(h => h.UName == TextBox1.Text && h.UPassword == TextBox2.Text).First(); 
    第二句:myuser = db.HotelUsers.Where(c => c.UName == TextBox_UName.Text).First();
    2.在第一个代码块中出现的Session是个什么东西?做什么用的?我对Session只有模糊的感觉!
    求针对这个代码中Session的意思及使用方法做个能让我这个菜鸟看懂的解释!
    代码块1:
    using System;
    using System.Collections;
    using System.Configuration;
    using System.Data;
    using System.Linq;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Xml.Linq;
    
    public partial class Login : System.Web.UI.Page
    {
      protected void Page_Load(object sender, EventArgs e)
      {
    
      }
      protected void Button1_Click(object sender, EventArgs e)
      {
        DataClassesDataContext db = new DataClassesDataContext();
        HotelUsers myuser;
        try
        {//下面这一句求详细“逐字解释”!!!!!!
          myuser = db.HotelUsers.Where(h => h.UName == TextBox1.Text && h.UPassword == TextBox2.Text).First();
          Label1.Text = "";
          Session["UName"] = myuser.UName;
          Session["UType"] = myuser.UType;
          Label1.Text = "欢迎你" + Session["UType"];
          if (Session["UType"].ToString() == "1")//Session不懂!
          {
            Response.Redirect("Default2.aspx");
          }
          else if (Session["UType"].ToString() == "2")
          {
            Response.Redirect("Default2.aspx");
          }
        }
        catch
        {
          Label1.Text = "错误!请重新输入!";
        }
      }
    }
    


    代码块2:
    using System;
    using System.Collections;
    using System.Configuration;
    using System.Data;
    using System.Linq;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Xml.Linq;
    
    public partial class HotelUsers_UserAdd : System.Web.UI.Page
    {
      protected void Page_Load(object sender, EventArgs e)
      {
    
      }
      //点“提交”,以下为运用了LINQ的从界面录入数据的方法
      protected void Button1_Click(object sender, EventArgs e)
      {
        if (Page.IsValid)
        {
          HotelUsers myUser = new HotelUsers();//LINQ在这里发生作用,创建新用户
          myUser.UName =TextBox_UName .Text.ToString();//获取用户名,以后应该取有意义的名字,而非1、2、3
          myUser.UPassword = TextBox_UPassword.Text.ToString();//密码
          myUser.UTel = TextBox_UTel.Text.ToString();//电话号码
          myUser.UAddress = TextBox_UAdress.Text.ToString();//地址
          myUser.UEmail = TextBox_UEmail.Text.ToString();//电邮
          myUser.UDepartment = TextBox_Department.Text.ToString();//部门
          //类型,下拉菜单获取值的写法!!!
          
          myUser.UType = int.Parse(DropDownList1.SelectedItem.Value);
          //性别,Checked属性来判断谁被选中
          if (RadioButton_Male.Checked)
            myUser.USex = true;
          if (RadioButton_Female.Checked)
            myUser.USex = false;
    
          //HotelUsers 从属于 DataClassesDataContext,后面的db.HotelUsers说明了这一点
          DataClassesDataContext db = new DataClassesDataContext();
          db.HotelUsers.InsertOnSubmit(myUser);//db中插入HotelUsers字段
          db.SubmitChanges();         //提交改变,不可少,以上三句是连续的!
    
        }
      }
    
      //CustomValidator是自定义验证,而非自定义控件。需要自定义ServerValidate函数来验证
      protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args)
      {
        DataClassesDataContext db = new DataClassesDataContext();
        HotelUsers myuser;
        //CustomValidator的属性IsValid表示是否通过验证,CompareValidator也有这个属性
        //args.IsValid表示args值是否通过验证,有True和False
        args.IsValid = false;//P.116
        try
        { //这里的c是什么?下面是什么意思?????????????????
          myuser = db.HotelUsers.Where(c => c.UName == TextBox_UName.Text).First();//
        }
        catch (Exception e)
        {
          args.IsValid = true;
    
        }
    
    
      }
    }
    



    C# 菜鸟中的雏鸟!提的问题也许很幼稚,但我是认真的。希望看在党国的面子上拉兄弟一把!
    2011年6月15日 16:18

答案

  • 你好

     

     if (Session["UType"].ToString() == "1")//Session不懂!
       {
        Response.Redirect("Default2.aspx"

    這裡的Session 是指ASP.NET web application 上的Session E.G. 可使用 ASP.NET 会话状态存储和检索用户的值

    詳情可以參考以下URL

    http://msdn.microsoft.com/zh-cn/library/ms178581.aspx

     

     

    //下面这一句求详细“逐字解释”!!!!!!
       myuser = db.HotelUsers.Where(h => h.UName == TextBox1.Text && h.UPassword == TextBox2.Text).First();
       Label1.Text = ""

     

    db是指 你上面定義的資料庫

     

    HotelUsers 相信是你資料庫上其中一個Table 的名1
    WHERE h=> 的意思是 代每一個Database record 是 h
    h.UName 和h.UPassword 他們應該是你在資料庫的Table 上的 field 名
     h.UName == TextBox1.Text && h.UPassword == TextBox2.Text

    是指當 UName = TextBox1.Text 和 UPassword = TextBox2.Text 的話找出來
    .First() 是指你只想取出第一個滿足要求的Record

     //这里的c是什么?下面是什么意思?????????????????
       myuser = db.HotelUsers.Where(c => c.UName == TextBox_UName.Text).First();//
    c 其實是自己定下的一個變數.. 你可以取代c 為其他字都是可行的
    E.G.
       myuser = db.HotelUsers.Where(u => u.UName == TextBox_UName.Text).First();//

    Please correct me if my concept is wrong

     


    Chi
    2011年6月15日 20:39
    版主