Skip to content

Latest commit

 

History

History
26 lines (16 loc) · 1.63 KB

README.md

File metadata and controls

26 lines (16 loc) · 1.63 KB

OLinq is a project to provide a Linq Queryable provider implementation for operating on ObservableCollections or other INotifyCollectionChanged supporting lists. The output of OLinq is an ObservableView which notifies when the results of the query have changed.

    var collection = new ObservableCollection<int>(){ 1, 2, 3 }; //an object implementing INotifyCollectionChanged
    var observableView = someQueryable.AsObservableQuery().Where(i => i > 2).ToObservableView(); //an ObservableView raises events when underlying source collections used in the linq statement are changed
    var observableBuffer = observableView.ToBuffer(); //an ObservableBuffer caches the results of the Linq query, so it is not re-evaluated, but instead the results are updated incrementally as the view raises events      

###Linq operator support###

The following Linq operators are both supported AND documented. There may be more that are supported, but aren't listed here :)

| Operator | Supported| Preserves positioning | Notes | | ------------- ||:-------------: || | | | || | Concat | Yes|Yes || | Intersect | Yes|No ||

####Notes on positioning####

The NewStartingIndex and OldStartingIndex values on the raised (NotifyCollectionChangedEventArgs)[http://msdn.microsoft.com/en-us/library/system.collections.specialized.notifycollectionchangedeventargs.aspx] are only supported by some of the Linq operators. If you use operators that don't support it, then you might find that the items in the buffer are not in the order you expect.