The error occurs in the SkipWhile method, in the second "line" keyword. Displays the following log
CS1929 "char" does not contain a definition for "Contains" and the best extension method overload "Queryable.Contains(IQueryable, string)" requires a receiver of type "IQueryable"
public static void loginEmployee(string user, string password)
{
string filename = "servidores_cadastrados_db_backup.txt";
string path = AppConfig.appconfig.defaultPath;
path = Path.Combine(path, filename);
if (File.ReadAllText(path).Contains(user))
{
employee.Registration = File.ReadAllText(path).SkipWhile(line => !line.Contains(user))
.TakeWhile(line => !line.Contains(user));
}
else
{
MessageBox.Show("Invalid User or Password..", "Invalid Login", MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
}
CodePudding user response:
You are using File.ReadAllText and then using SkipWhile on that which will return each character of the text. What you should be using is File.ReadLines and iterating over the lines.
employee.Registration = File.ReadLines(path).SkipWhile(line => !line.Contains(user))
.TakeWhile(line => !line.Contains(user));
Also, I think your .TakeWhile(line => !line.Contains(user) is wrong, shouldn't it be trying to match on the user instead of not match?
employee.Registration = File.ReadLines(path).SkipWhile(line => !line.Contains(user))
.TakeWhile(line => line.Contains(user));
CodePudding user response:
I guess skip while doesn't work with Characters. maybe try dealing with each one as a string and seeing if that works? although I dont think this is best practice, I just dont really know what you are trying to achieve
File.ReadAllText(path).SkipWhile(line => !line.ToString().Contains(user)).TakeWhile(line => !line.ToString().Contains(user));
