2009-01-27 31 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