Relatude Help

23 Relation filters

Filter nodes by what they are related to, without loading either side:

// Events at a venue
db.Query<IEvent>().WhereRelates(e => e.Venue, venueId).Execute();

// Events not hosted by an organizer
db.Query<IEvent>().WhereNotRelates(e => e.Host, organizerId).Execute();

// Events at any of these venues
db.Query<IEvent>().WhereRelatesAny(e => e.Venue, new[] { id1, id2, id3 }).Execute();

// A relation declared on a subtype: name the subtype (a hypothetical IConcert : IEvent)
db.Query<IEvent>().WhereRelates<IConcert, object>(c => c.Performers, performerId).Execute();

Relation filters combine with any other filter:

var affordable = db.Query<IEvent>()
                   .WhereRelates(e => e.Venue, venueId)
                   .Where(e => e.Price <= 300m)
                   .OrderBy(e => e.StartsUtc)
                   .Execute();

Or start the query from a relation property, which often reads most naturally:

var soldOut = db.Get<IVenue>(venueId).Events
                .Query()
                .Where(e => e.Status == EventStatus.SoldOut)
                .OrderByDescending(e => e.StartsUtc)
                .Take(5)
                .Execute();