检查成员列表以查找是否匹配给定的 属性(例如密码)
Check a list of members to find whether any match a given property (e.g. password)
我的问题在于下面的这段代码。
对于 null 或空白问题,它按预期运行,但在将我的员工登录详细信息移植到 SQLite 数据库后,我现在正在努力正确测试输入是否与所有其他已知成员通行证 [密码] 不匹配。
对于代码 sheet 中每个工作人员的密码变量,这要简单得多,其中有名字等等,但是我写的是一种向这个数据库添加新员工的方式,很高兴知道如何正确限定它们不存在/与在条目对象 entPassword.Text 中找到的输入匹配并存储在“代码隐藏”中的变量传递中。
任何方向都很好,因为我觉得我错过了或者之前错过了一些明显的解决方案。
下面是代码片段,其中的代码实际上通过了已实施的 foreach
检查,因此很难跟踪断点,因为它只是在等待更多输入准备就绪 [如果密码正确,它就可以正常登录 ] .
也许整个方法是错误的,我不知道:/
这里也有一个 youtube screen recording,所以如果你想更清楚地了解它,你可以看到无法正常工作的问题 - 编辑:如果你观看它,请将视频静音,它有可怕的通知铃声,记录得很糟糕: )
下面的代码片段:
private async void BtnLogin_Clicked(object sender, EventArgs e)
{
string pass = entPassword.Text;
if (string.IsNullOrWhiteSpace(pass))
{
InputError($"Passcode: ?{pass} ? Shows nothing was entered: Entry DENIED!");
}
else
{
List<Member> members = await App.Db.GetMembersAsync();
IEnumerable<string> memberPasses = from m in members where m.Pass == pass select m.Pass;
//the trouble ahead...
foreach (string p in memberPasses)
{
if (pass != p)
{
InputError($"Passcode: {pass} was NOT a recognized code");
}
else
{
IEnumerable<Member> member = from m in members
where m.Pass == p
select m;
Member mem = (Member)member.FirstOrDefault();
mem.DateStamp = DateTime.Now.ToShortDateString();
mem.TimeStamp = DateTime.Now.ToShortTimeString();
memberDetails = new string($" {mem.Usr} @ {mem.TimeStamp} on {mem.DateStamp}");
await App.Db.UpdateMemberAsync(mem);
NextPage();
}
}
}
}
搜索成员列表以找出是否有匹配给定的 属性。
此处,“通过”与“member.Pass”相比:
var matchingMembers = (from m in members where m.Pass == pass).ToList();
if (matchingMembers.Count > 0 )
{
foreach (var member in matchingMembers)
{
//...
}
} else
{
//..tell user no match for "pass"..
}
我的问题在于下面的这段代码。 对于 null 或空白问题,它按预期运行,但在将我的员工登录详细信息移植到 SQLite 数据库后,我现在正在努力正确测试输入是否与所有其他已知成员通行证 [密码] 不匹配。 对于代码 sheet 中每个工作人员的密码变量,这要简单得多,其中有名字等等,但是我写的是一种向这个数据库添加新员工的方式,很高兴知道如何正确限定它们不存在/与在条目对象 entPassword.Text 中找到的输入匹配并存储在“代码隐藏”中的变量传递中。
任何方向都很好,因为我觉得我错过了或者之前错过了一些明显的解决方案。
下面是代码片段,其中的代码实际上通过了已实施的 foreach
检查,因此很难跟踪断点,因为它只是在等待更多输入准备就绪 [如果密码正确,它就可以正常登录 ] .
也许整个方法是错误的,我不知道:/
这里也有一个 youtube screen recording,所以如果你想更清楚地了解它,你可以看到无法正常工作的问题 - 编辑:如果你观看它,请将视频静音,它有可怕的通知铃声,记录得很糟糕: )
下面的代码片段:
private async void BtnLogin_Clicked(object sender, EventArgs e)
{
string pass = entPassword.Text;
if (string.IsNullOrWhiteSpace(pass))
{
InputError($"Passcode: ?{pass} ? Shows nothing was entered: Entry DENIED!");
}
else
{
List<Member> members = await App.Db.GetMembersAsync();
IEnumerable<string> memberPasses = from m in members where m.Pass == pass select m.Pass;
//the trouble ahead...
foreach (string p in memberPasses)
{
if (pass != p)
{
InputError($"Passcode: {pass} was NOT a recognized code");
}
else
{
IEnumerable<Member> member = from m in members
where m.Pass == p
select m;
Member mem = (Member)member.FirstOrDefault();
mem.DateStamp = DateTime.Now.ToShortDateString();
mem.TimeStamp = DateTime.Now.ToShortTimeString();
memberDetails = new string($" {mem.Usr} @ {mem.TimeStamp} on {mem.DateStamp}");
await App.Db.UpdateMemberAsync(mem);
NextPage();
}
}
}
}
搜索成员列表以找出是否有匹配给定的 属性。
此处,“通过”与“member.Pass”相比:
var matchingMembers = (from m in members where m.Pass == pass).ToList();
if (matchingMembers.Count > 0 )
{
foreach (var member in matchingMembers)
{
//...
}
} else
{
//..tell user no match for "pass"..
}