Session: Querying: How to use intersect?
To return only documents that match all provided sub-queries we have introduced Intersect
extension that enables us to do server-side intersection queries.
Syntax
IRavenQueryable<T> Intersect<T>(this IQueryable<T> self) { ... }
Return Value | |
---|---|
IRavenQueryable | Instance implementing IRavenQueryable interface containing additional query methods and extensions. |
Example
// return all T-shirts that are manufactured by 'Raven'
// and contain both 'Small Blue' and 'Large Gray' types
List<TShirt> tshirts = session
.Query<TShirt, TShirts_ByManufacturerColorSizeAndReleaseYear>()
.Where(x => x.Manufacturer == "Raven")
.Intersect()
.Where(x => x.Types.Any(t => t.Color == "Blue" && t.Size == "Small"))
.Intersect()
.Where(x => x.Types.Any(t => t.Color == "Gray" && t.Size == "Large"))
.ToList();