检查成员列表以查找是否匹配给定的 属性(例如密码)

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"..
}