【问题标题】:Using LINQ2Sql for Validate Users使用 LINQ2Sql 验证用户
【发布时间】:2009-01-27 21:19:03
【问题描述】:

您好,我正在使用 Linq 检查两个用户字段是否对应于 SQL 表中的唯一用户寄存器,例如

UID : 用户 ID 密码:密码

所以字段必须来自单个用户,我正在尝试这个:

 public bool AutentificacionUsuario(string userID , string password passID)
    {
        USER _userID = _db.USER.FirstOrDefault(uid => uid.siglas == userID);
        USER _passID = _db.USER.FirstOrDefault(pwd => pwd.codigousuario == passID);

但两者都从 Datacontext 返回一个 USER Table 实例(两个而不是一个),我想在 lambda 表达式中匹配它们,例如“此用户 ID 匹配 passID”

谢谢!

【问题讨论】:

    标签: .net sql linq linq-to-sql lambda


    【解决方案1】:
    var usr = db.Users.From(uid => uid.dsiglas == userID && 
                uid.codigousuario == passID).FirstOrDefault();
    
    if(usr != null)
       //Authenticate user here
    

    var usr = (from u in db.Users
              where u.dsiglas == userID && uid.codigousuario == passID
              select u).FirstOrDefault()
    
    if(usr != null)
        //Authenticate user here
    

    【讨论】:

      【解决方案2】:

      您需要使用 Where 子句来选择用户。我不确定 LINQ-2-SQL 是否是我一直在使用的,但我会这样做:

      USER u = (
       from u in _db.USER
       where u.uid == userID && u.pwd == password
       select u
      ).FirstOrDefault()
      

      我希望代码是正确的,我现在无法访问 LINQ 项目上的智能感知来检查。

      【讨论】:

        【解决方案3】:

        为什么不这样做?

        var doesUserExist=db.User.Any(p => p.UserID.Equals(userID) && p.Password.Equals(password));
        

        【讨论】:

        • 真的我只是忘记了使用一个 lambda 表达式进行迭代,我试图将“=>”和本地变量放在两次。像这样的东西: var doesUserExist=db.User.Any(p => p.UserID.Equals(userID) && c=> c.Password.Equals(password));
        猜你喜欢
        • 1970-01-01
        • 2011-07-30
        • 1970-01-01
        • 2011-11-25
        • 2013-12-28
        • 2017-11-08
        • 2015-10-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多