Dynamic où clause (OR) dans Linq aux entités

Dans le post ici j'ai appris à construire une dynamique de requêtes à l'aide de l'exécution différée de Linq. Mais la requête est en fait à l'aide d'un ET concaténation de la condition where.

Comment puis-je obtenir la même requête, mais avec un OU logique?

En raison de l'Drapeaux enum, la requête doit rechercher nom d'utilisateurWindowsUsername ou les deux:

public User GetUser(IdentifierType type, string identifier)
{
    using (var context = contextFactory.Invoke())
    {
        var query = from u in context.Users select u;

        if (type.HasFlag(IdentifierType.Username))
            query = query.Where(u => u.Username == identifier);

        if (type.HasFlag(IdentifierType.Windows))
            query = query.Where(u => u.WindowsUsername == identifier);

        return query.FirstOrDefault();
    }
}

source d'informationauteur Thomas Zweifel