List <T>移动到下一个元素

DNR*_*DNR 0 c# asp.net collections

我搜索了SO并找到了一些帖子,但无法让他们工作.

问题:如何循环到List Collection(custLoginHist [1]等)中的下一个项目?

    List<eCommCustomer.oCustomer> custLoginHist = new List<eComm.oCustomer>();
    eCommCustomerDAL.GetCustomerPrevLogin(custLoginHist, oCust);

    if (custLoginHist.Count > 0)
    {
        eCommSecurityFactory oSecFactory = new eCommSecurityFactory();
        if (oCust.CustHash == oSecFactory.CreateHash(custLoginHist[0].CustSalt, custLoginHist[0].CustHash))
        {
            //Password has been used before;
            return false;
        }
        else
        {
            // Valid password;
            return true;
        }
    }
    return true;
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*nna 5

foreach(eCommCustomer.oCustomer cust in custLoginHist)
{
  //Do something with cust here.
}
Run Code Online (Sandbox Code Playgroud)

要么:

for(int i = 0; i != custLoginHist.Count; ++i)
{
  eCommCustomer.oCustomer cust = custLoginHist[i];
  //Do something with cust here.
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我们希望为任何单个匹配返回false,否则返回true,因此:

foreach(eCommCustomer.oCustomer cust in custLoginHist)
  if(oCust.CustHash == oSecFactory.CreateHash(custLoginHist[0].CustSalt, custLoginHist[0].CustHash)
    return false;
return true;//if we reached here, no matches.
Run Code Online (Sandbox Code Playgroud)

这是一个坏主意,因为你已经更容易进入系统.如果我尝试将密码设置为某些内容,并且您拒绝,我现在知道您的某个用户使用了该密码.尽管你应该通过质量检查阻止一些更可能的违规者("密码","密码1"等),但你最好让这种情况发生.