Я все еще изучаю LINQ.Я могу сделать несколько простых запросов, но этот немного отличается.У меня есть следующий запрос, который аутентифицирует пользователя.
User user = (from u in db.Users
where u.Username.Equals(username) &&
u.Password.Equals(UserSecurity.GetPasswordHash(username, password)) &&
u.Status == true
select u).FirstOrDefault();
Это работает, но теперь мне нужно войти, почему не удалось войти в систему.Если было неверное имя пользователя, я запишу одну вещь.Если пароль был неправильным, я войду другой.Или, если пользователь неактивен (status = false), я зарегистрирую другого.Я понимаю, что могу разделить это на 3 отдельных запроса, чтобы выяснить, что не удалось, но мне было интересно, будет ли эффективнее сделать это в одном.Если так, то как?Это мой (не проверенный) подход с тремя запросами.
User user2 = null;
var users1 = db.Users.Where(i => i.Username.Equals(username));
if (users1 != null)
{
var users2 = users1.Where(i => i.Password.Equals(UserSecurity.GetPasswordHash(username, password)));
if (users2 != null)
{
var users3 = users2.Where(i => i.Status);
if (users3 != null)
{
user2 = users3.FirstOrDefault();
}
else
{
// User inactive
}
}
else
{
// Password invalid.
}
}
else
{
// Username invalid
}