Session: Querying: How to Use NOT Operator

IDocumentQuery contains NOT operator which can be used to negate next predicate

Note

NOT operator cannot be used alone without succeeding predicate.

Example I

// load all entities from 'Employees' collection
// where FirstName NOT equals 'Robert'
List<Employee> employees = session
    .Advanced
    .DocumentQuery<Employee>()
    .Not
    .WhereEquals(x => x.FirstName, "Robert")
    .ToList();

Example II

// load all entities from 'Employees' collection
// where FirstName NOT equals 'Robert'
// and LastName NOT equals 'King'
List<Employee> employees = session
    .Advanced
    .DocumentQuery<Employee>()
    .Not
    .OpenSubclause()
    .WhereEquals(x => x.FirstName, "Robert")
    .AndAlso()
    .WhereEquals(x => x.LastName, "King")
    .CloseSubclause()
    .ToList();

Example III

// load all entities from 'Employees' collection
// where FirstName NOT equals 'Robert'
// and LastName NOT equals 'King'
// identical to 'Example II' but 'WhereNotEquals' is used
List<Employee> employees = session
    .Advanced
    .DocumentQuery<Employee>()
    .WhereNotEquals(x => x.FirstName, "Robert")
    .AndAlso()
    .WhereNotEquals(x => x.LastName, "King")
    .ToList();