Query Operators Supported in Live Views
LiveLinq supports all LINQ query operators in its queries. Not all operators have LiveLinq-specific implementation benefiting from indexes and other query execution optimization techniques, but such operations simply use the standard LINQ to Objects (or LINQ to XML) implementations, so it is transparent to the user.
However, not all query operations can be used in live views. This is because not all query operations have incremental view maintenance algorithms, as some would require re-populating from scratch (requerying) every time they are maintained. If your query contains such operations, you won't be able to use that query to create a live view. An attempt to do that will cause a compilation error.
Here is the list of query operators allowed in live views:
Operator | Notes |
Select | Overload with selector depending on the index is not allowed. |
Where | Overload with predicate depending on the index is not allowed. |
Join | Overload with comparer is not allowed. |
GroupJoin | Overload with comparer is not allowed. |
OrderBy | Overload with comparer is not allowed. |
OrderByDescending | Overload with comparer is not allowed. |
GroupBy | Overload with comparer is not allowed. |
SelectMany | Overloads with selector and collectionSelector depending on the index are not allowed. |
Union |
|
Concat |
|
Aggregate | Use LiveAggregate if you want to optimize performance with incremental view maintenance. |
Count | Use LiveCount if you want to optimize performance with incremental view maintenance. |
Min/Max | Use LiveMin/LiveMax if you want to optimize performance with incremental view maintenance. |
Sum | Use LiveSum if you want to optimize performance with incremental view maintenance. |
Average | Use LiveAverage if you want to optimize performance with incremental view maintenance. |