In some situations query execution must be delayed. To cover such scenario Lazily
and many others query extensions has been introduced.
Lazily and LazilyAsync
Lazy<IEnumerable<T>> Lazily<T>(
this IQueryable<T> source) { ... }
Lazy<IEnumerable<T>> Lazily<T>(
this IQueryable<T> source,
Action<IEnumerable<T>> onEval) { ... }
Lazy<Task<IEnumerable<T>>> LazilyAsync<T>(
this IQueryable<T> source) { ... }
Lazy<Task<IEnumerable<T>>> LazilyAsync<T>(
this IQueryable<T> source,
Action<IEnumerable<T>> onEval) { ... }
Parameters |
|
|
onEval |
Action<IEnumerable<TResult>> |
Action that will be performed on query results. |
Return Value |
|
Lazy<IEnumerable<TResult>> |
Lazy query initializer returning query results. |
Example
Lazy<IEnumerable<Employee>> employeesLazy = session
.Query<Employee>()
.Where(x => x.FirstName == "Robert")
.Lazily();
IEnumerable<Employee> employees = employeesLazy.Value; // query will be executed here
or
Lazy<Task<IEnumerable<Employee>>> employeesLazy = session
.Query<Employee>()
.Where(x => x.FirstName == "Robert")
.LazilyAsync();
IEnumerable<Employee> employees = await employeesLazy.Value; // query will be executed here
CountLazily
Lazy<int> CountLazily<T>(
this IRavenQueryable<T> source) { ... }
Return Value |
|
Lazy<IEnumerable<TResult>> |
Lazy query initializer returning count of matched documents. |
Example
Lazy<int> countLazy = session
.Query<Employee>()
.Where(x => x.FirstName == "Robert")
.CountLazily();
int count = countLazy.Value; // query will be executed here
SuggestLazy
Lazy<SuggestionQueryResult> SuggestLazy(
this IQueryable queryable) { ... }
Lazy<SuggestionQueryResult> SuggestLazy(
this IQueryable queryable,
SuggestionQuery query) { ... }
Parameters |
|
|
query |
SuggestionQuery |
A suggestion query definition containing all information required to query a specified index. |
Return Value |
|
Lazy<SuggestionQueryResult> |
Lazy query initializer containing array of all suggestions for executed query. |
Example
Lazy<SuggestionQueryResult> suggestLazy = session
.Query<Employee>()
.SuggestLazy();
SuggestionQueryResult suggest = suggestLazy.Value; // query will be executed here
string[] suggestions = suggest.Suggestions;
ToFacetsLazy
Lazy<FacetResults> ToFacetsLazy<T>(
this IQueryable<T> queryable,
string facetSetupDoc,
int start = 0,
int? pageSize = null) { ... }
Lazy<FacetResults> ToFacetsLazy<T>(
this IQueryable<T> queryable,
IEnumerable<Facet> facets,
int start = 0,
int? pageSize = null) { ... }
Parameters |
|
|
facets |
List<Facet> |
List of facets required to perform a facet query (mutually exclusive with facetSetupDoc ). |
facetSetupDoc |
string |
Document key that contains predefined FacetSetup (mutually exclusive with facets ). |
start |
int |
number of results that should be skipped. Default: 0 . |
pageSize |
int |
maximum number of results that will be retrieved. Default: null . |
Return Value |
|
Lazy<FacetResults> |
Lazy query initializer containing Facet query results with query Duration and list of Results - one entry for each term/range as specified in [FacetSetup] document or passed in parameters. |
Example
Lazy<FacetResults> facetsLazy = session
.Query<Camera>("Camera/Costs")
.ToFacetsLazy("facets/CameraFacets");
FacetResults facets = facetsLazy.Value; // query will be executed here
Dictionary<string, FacetResult> results = facets.Results;