2009-01-27 30 views
1

您好即时通讯使用LINQ用于检查,如果两个用户字段对应于SQL表一个唯一的用户寄存器,例如使用LINQ2SQL用于验证用户

UID:用户ID PIN:passID

所以字段必须从单个用户,我是想这样的:

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); 

但boths返回从DataContext的用户表实例(二不是一个),我想匹配他们在lambda表达式一样,如果“此用户ID匹配passID”

谢谢!

回答

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 
1

您需要使用Where子句来选择用户。我不确定如果LINQ-2-SQL是我使用过什么,但我会做这样的:

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

我希望代码是正确的,我没有进入智能感知上一个LINQ项目现在要检查。

1

为什么不这样做?

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

真的,我只是忘了使用一个lambda表达式进行迭代,我试图把“=>”和局部变量放在两次。 somthing like this: var doesUserExist = db.User.Any(p => p.UserID.Equals(userID)&& c => c.Password.Equals(password)); – 2009-01-28 21:01:12