Session: Querying: How to stream query results?

Query results can be streamed using Stream method from Advanced session operations.

Syntax

IEnumerator<StreamResult<T>> Stream<T>(IQueryable<T> query);

IEnumerator<StreamResult<T>> Stream<T>(
	IQueryable<T> query,
	out QueryHeaderInformation queryHeaderInformation);

IEnumerator<StreamResult<T>> Stream<T>(IDocumentQuery<T> query);

IEnumerator<StreamResult<T>> Stream<T>(
	IDocumentQuery<T> query,
	out QueryHeaderInformation queryHeaderInformation);
Parameters
query IQueryable or IDocumentQuery Query to stream results for.
queryHeaderInformation QueryHeaderInformation Information about performed query.
Return Value
IEnumerator<StreamResult> Enumerator with entities.
QueryHeaderInformation Information about performed query.

Example I

IQueryable<Employee> query = session
	.Query<Employee, Employees_ByFirstName>()
	.Where(x => x.FirstName == "Robert");

IEnumerator<StreamResult<Employee>> results = session.Advanced.Stream(query);

while (results.MoveNext())
{
	StreamResult<Employee> employee = results.Current;
}

Example II

IDocumentQuery<Employee> query = session
	.Advanced
	.DocumentQuery<Employee, Employees_ByFirstName>()
	.WhereEquals(x => x.FirstName, "Robert");

QueryHeaderInformation queryHeaderInformation;
IEnumerator<StreamResult<Employee>> results = session.Advanced.Stream(query, out queryHeaderInformation);

while (results.MoveNext())
{
	StreamResult<Employee> employee = results.Current;
}

Remarks

Streaming results only works for queries that were made against a (predefined) static index.