Maximum ignores Inline Updates

Offen
#896 4 Kommentare 0 Reaktionen 1 zugewiesene Person Auf GitHub ansehen

Maintainer antworten meist innerhalb von 1 Tag

@JakenVeina arbeitet bereits daran.

Seit 29.5.2025.

Bewertung

Dieses Issue wurde noch nicht bewertet.

Beschreibung

bug

Code to replicate the issue:

using DynamicData;
using DynamicData.Aggregation;
using DynamicDataRightJoin;

int? max = null;

var cache = new SourceCache<Foo, string>(foo => foo.Id);

var sub = cache
    .Connect()
    .TransformWithInlineUpdate(
        foo => new TransformedFoo(foo.Id)
        {
            TransformedValue = foo.Value
        },
        (transformedFoo, foo) =>
        {
            transformedFoo.TransformedValue = foo.Value;
        })
    .Maximum(transformedFoo => transformedFoo.TransformedValue)
    .Subscribe(newMax =>
    {
        max = newMax;
    });

cache.AddOrUpdate(new Foo("0")
{
    Value = 0
});

Console.WriteLine(max); // 0

cache.AddOrUpdate(new Foo("0")
{
    Value = 1
});

Console.WriteLine(max); // Expected: 1, Actual: 0

sub.Dispose();

If I understood correctly, this is because:

  • TransformWithInlineUpdate calls cache.Refresh(change.Key); when inline updating even if the change reason was Update. Is this intended?
  • ForAggregation ignores changes which reason is Refresh.

Originally posted by @glrusso in https://github.com/reactivemarbles/DynamicData/discussions/895#discussioncomment-9156245

Vorherrschende Sprache
C#
Sterne
1.9k
Forks
194
Ø Merge
12 Min.
Gemergte PRs (30 T.)
1

Entwicklungsumgebung

Dieses Projekt bietet weder Dev-Container noch Dockerfile noch Beitragsleitfaden – die Einrichtung liegt bei Ihnen. Beginnen Sie mit der README; die allgemeinen Schritte stehen in unserem Leitfaden für den ersten Beitrag.

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus reactivemarbles/DynamicData

Alle Issues in reactivemarbles/DynamicData

Ähnliche Issues

Weitere Issues zu C#

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.