문자열을 해시하고 (이 경우 내 로그인) linq 코드를 작성한 다음 내 데이터베이스에서 찾아야합니다. 해시 로그인 후 linq을 사용하여 검색하십시오.
내가 시도 :var userFind = context.Users.FirstOrDefault(user =>HashHelper.HashCode(user.Login).Equals(u.Login));
내가 때문에 해시 코드의 오류가 발생했습니다. 나는 foreach를 가진 나의 명부 전부를 읽지 않을 것입니다. 한 줄의 코드로 그렇게 할 수 있는지 궁금합니다. 감사합니다.
편집 : 그렇게 할 방법을 찾았지만 예상 한만큼 가볍지 않습니다. 데이터베이스의 데이터가 이미 해시되어 u.Login 현재 사용자의 로그인의 값이면
User userFind = null;
foreach (var user in context.Users)
{
string hashedLogin = HashHelper.HashCode(user.Login);
if(hashedLogin.Equals(u.Login))
{
userFind = user;
}
}
'u.Login'이란 무엇이며 왜 데이터베이스의 값을 해시하고 있습니까? – Jodrell
아아, 알겠습니다. 'u.Login'은 일치시키려는 해시 된 로그인입니다. unhashed 로그인은 데이터베이스에 저장됩니다. 문제는 'HashHelper.HashCode'는 TSQL에 대한 명백한 변환이 없으므로 모든 ORM이이를 SQL로 변환 할 수 없다는 것입니다. 이게 옳은 거니? – Jodrell
당신의 편집은 모든 사용자를 클라이언트로 끌어 들이고 'HashHelper.HashCode'가 평가 될 수있는 비교를합니다. 많은 사용자가없는 경우 (약 1000 개 이상)이 방법이 가장 간단한 방법 일 것입니다. – Jodrell