5

我有一个关于我目前正在从事的项目的问题。

我有这个代码:

 var query = from user in dwe.UsersTable
                        where user.LoginName.Equals(usernameBox.Text) && user.Password.Equals(pwBox.Text)
                        select user;

        if (query.Count() == 1)
        {
            Session["User"] = usernameBox.Text;                     
            Response.Redirect("Edit.aspx");
        }
        else
        {
            LabelError.Text = "Error try again";
        }
    }

在我的“UsersTable”中,我有一个名为“UserID”的列。我想将“用户 ID”作为会话发送到重定向页面 (Edit.aspx),用户 ID 必须等于用户名和密码之间的比较结果。

4

2 回答 2

6

你只需要写下

var query = (from user in dwe.UsersTable 
                        where user.LoginName.Equals(usernameBox.Text) && 
                        user.Password.Equals(pwBox.Text)
                         select user).FirstOrDefault();

if(query!=null)
{
   Session["User"] = query.UserID; 
   Response.Redirect("Edit.aspx"); 
}
else
{
   LabelError.Text = "Error try again";
}

无需编写您拥有的使用 Count 方法的代码,而不是仅使用 OfFirstOrDefault将轻松为您提供结果。

于 2012-09-24T08:09:37.247 回答
3
var query = from user in dwe.UsersTable
            where user.LoginName.Equals(usernameBox.Text) 
                  && user.Password.Equals(pwBox.Text)
            select user;

// get user from query
// If SingleOrDefault is not supported (<4.0) use FirstOrDefault instead. 
// Thanks Tim Schmelter
var user = query.SingleOrDefault(); 

if (user != null)
{
    Session["UserID"] = user.UserID;                 
    Response.Redirect("Edit.aspx");
}
else
{
    LabelError.Text = "Error try again";
}
于 2012-09-24T08:07:27.513 回答