If the service has a social/community aspect, then allow creating a username. (This doesn't have to be during registration. You could give them a default until they want to change it.)  

If no social, soley an email allows them one less username to remember.

Finally, the login field should allow Username OR Email.

Registration: Username and password or email and password
I have the following code:

if (ListOfMyModel.Any(a =&gt; a.SomeID != 0 &amp;&amp; 
       IsAuthorizedOnID(TheUserID, a.SomeID) == false) == false)
{
    return true;
}


Basically, I have a list of objects and I replaced a foreach loop with .Any() to which I'm passing in a lambda expression.

This code should only return true only if a) all the objects that have SomeID not equal to 0 are authorized in the second function but don't worry about the authorization for the objects that have SomeID equal to 0.

Is my expression correct or are there cases where this may fail?

Thanks.
