You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Protected files were modified in this change.
This pull request is in request_review mode and requires explicit human scrutiny before merge.
Protected files: README.md
Summary
Fixes three factual inaccuracies in the README.md reactive collections section, where the documentation references APIs that do not exist in R3Ext.DynamicData.
Changes
1. SortExpressionComparer<T> → Comparer<T>.Create(...) in code example
The code example in the Reactive Collections section used SortExpressionComparer<Person>.Ascending(p => p.Name), but SortExpressionComparer<T> is not ported to R3Ext.DynamicData — it is explicitly listed as a known gap in docs/LibraryParity.md:
"Sort operators accept IComparer<T> directly — see Known Gaps"
The Sorting row in the operators table listed `SortAsync` which does not exist anywhere in the codebase. The fused sort+bind operator that does exist is SortAndBind (in ObservableCacheEx.SortAndBind.cs).
3. MergeChangeSet → MergeChangeSets (typo fix)
The Change Tracking row listed `MergeChangeSet` (singular) but the actual method name is MergeChangeSets (plural), as defined in R3Ext.DynamicData/List/ObservableListEx.MergeChangeSets.cs.
Verification
SortExpressionComparer<T>: confirmed absent with grep -rn "SortExpressionComparer" --include="*.cs"
SortAsync: confirmed absent with grep -rn "SortAsync" --include="*.cs"
SortAndBind: confirmed present in R3Ext.DynamicData/Cache/ObservableCacheEx.SortAndBind.cs
MergeChangeSets: confirmed present in R3Ext.DynamicData/List/ObservableListEx.MergeChangeSets.cs
Comparer<T>.Create(...): standard .NET API, no porting required
This was originally intended as a pull request, but GitHub Actions is not permitted to create or approve pull requests in this repository.
The changes have been pushed to branch doc-sync/fix-readme-api-inaccuracies-793fc657b54ac6e1.
To fix the permissions issue, go to Settings → Actions → General and enable Allow GitHub Actions to create and approve pull requests. See also: gh-aw FAQ
Show patch preview (47 of 47 lines)
From ae054c9d67c450cf3220c1b4be7e08fd13648a1d Mon Sep 17 00:00:00 2001
From: "github-actions[bot]" <github-actions[bot]@users.noreply.github.com>
Date: Thu, 25 Jun 2026 09:56:48 +0000
Subject: [PATCH] docs: fix README API inaccuracies in R3Ext.DynamicData
operators
- Replace SortExpressionComparer<T> (not ported) with Comparer<T>.Create()
in the reactive collections code example; SortExpressionComparer is a
known gap listed in docs/LibraryParity.md
- Replace non-existent SortAsync with SortAndBind in the operator table- Fix MergeChangeSet (singular) to MergeChangeSets (actual method name)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
---
README.md | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/README.md b/README.md
index 9fbbfc7..814f48c 100644
--- a/README.md+++ b/README.md@@ -113,7 +113,7 @@ var cache = new SourceCache<Person, int>(p => p.Id);
// Observe changes with automatic caching
cache.Connect()
.Filter(p => p.IsActive)
- .Sort(SortExpressionComparer<Person>.Ascending(p => p.Name))+ .Sort(Comparer<Person>.Create((a, b) => string.Compare(a.Name, b.Name, StringComparison.Ordinal)))
.Transform(p => new PersonViewModel(p))
.Bind(out var items) // Bind to ObservableCollection
.Subscribe();
@@ -139,10 +139,10 @@ cache.Connect()
| ------------------- | ---------------------------------------------- |
| **Filtering** | `Filter`, `FilterOnObservable`, `AutoRefresh` |
| **Transformation** | `Transform`, `TransformMany`, `TransformAsync` |
-| **Sorting** | `Sort`, `SortAsync` |+| **Sorting** | `Sort`, `SortAndBind` |
| **Grouping** | `Group`, `GroupWithImmutableState`, `GroupOn` |
| **Aggregation** | `Count`, `Sum`, `Avg`, `Min`, `Max` |
-| **Change Tracking** | `DistinctValues`, `MergeChangeSet`, `Clone` |+| **Change Tracking** | `DistinctValues`, `MergeChangeSets`, `Clone
... (truncated)
Caution
Protected files were modified in this change.
This pull request is in
request_reviewmode and requires explicit human scrutiny before merge.Protected files:
README.mdSummary
Fixes three factual inaccuracies in the
README.mdreactive collections section, where the documentation references APIs that do not exist inR3Ext.DynamicData.Changes
1.
SortExpressionComparer<T>→Comparer<T>.Create(...)in code exampleThe code example in the Reactive Collections section used
SortExpressionComparer<Person>.Ascending(p => p.Name), butSortExpressionComparer<T>is not ported toR3Ext.DynamicData— it is explicitly listed as a known gap indocs/LibraryParity.md:The example now uses the correct approach:
2.
SortAsync→SortAndBindin the operator tableThe Sorting row in the operators table listed
`SortAsync`which does not exist anywhere in the codebase. The fused sort+bind operator that does exist isSortAndBind(inObservableCacheEx.SortAndBind.cs).3.
MergeChangeSet→MergeChangeSets(typo fix)The Change Tracking row listed
`MergeChangeSet`(singular) but the actual method name isMergeChangeSets(plural), as defined inR3Ext.DynamicData/List/ObservableListEx.MergeChangeSets.cs.Verification
SortExpressionComparer<T>: confirmed absent withgrep -rn "SortExpressionComparer" --include="*.cs"SortAsync: confirmed absent withgrep -rn "SortAsync" --include="*.cs"SortAndBind: confirmed present inR3Ext.DynamicData/Cache/ObservableCacheEx.SortAndBind.csMergeChangeSets: confirmed present inR3Ext.DynamicData/List/ObservableListEx.MergeChangeSets.csComparer<T>.Create(...): standard .NET API, no porting requiredNote
This was originally intended as a pull request, but GitHub Actions is not permitted to create or approve pull requests in this repository.
The changes have been pushed to branch
doc-sync/fix-readme-api-inaccuracies-793fc657b54ac6e1.Click here to create the pull request
To fix the permissions issue, go to Settings → Actions → General and enable Allow GitHub Actions to create and approve pull requests. See also: gh-aw FAQ
Show patch preview (47 of 47 lines)