Вы можете использовать оператор &&
для сравнения как имя пользователя и пароль:
bool isValidUser = list.Any(x => x.User == u && x.Pass == p);
Кстати с вашим текущим дизайном он выглядит, как вы хранения пользовательских паролей в виде простого текста внутри базы данных. Это то, чего вы не должны делать, а скорее нужно хранить хеши и соль. Таким образом, правильный алгоритм будет такой:
string u = the user name provided by someone;
string p = the password provided by someone;
// I have no idea what this dt variable is, but I assume for this example
// that it is an entity framework context that returns a users table with the
// following columns: ID, User, PasswordSalt and PasswordHash
List<DataRow> list = dt.AsEnumerable().ToList();
bool isValidUser = false;
var user = list.SingleOrDefault(x => x.User == u); // the username must be unique
if (user != null)
{
string actualHash = CalculateHash(p, user.PasswordSalt);
isValidUser = actualHash == u.PasswordHash;
}
return isValidUser;
Так как вы можете видеть в этом примере надлежащее осуществление является хранение имя пользователя, соль и хэш пароля в базе данных. Затем сравните рассчитанный хеш с значением из db, чтобы проверить, введен ли пользователь правильные учетные данные.
Для этого требуется ровно две основные функции LINQ, описанные в учебниках. что ты уже испробовал? – CDove
Попробуйте это для удаленного вопроса, если он все еще не работает: https://jsfiddle.net/dotspencer/3xnmn7np/8/ –
@ spencer.sm Спасибо. У меня почти что-то похожее, используя функцию «map», но ваша проще и короче ... – Si8