From InnerJoin.cs, current head of main (follow link for more context):
|
joinedCache.Remove((leftKey, change.Key)); |
It appears that for an inner join, if a right value updates its left key, then InnerJoin will fail to remove it from the results if it no longer joins.
That's because on update of right values, results are removed only based on the current value of the left key, not the previous. To fix this, on update, It would seem that both current/previous left keys need to be taken into account.
I haven't had the time to look into this further / confirm, but I wanted to raise an issue here before I lose sight of it.
From
InnerJoin.cs, currentheadofmain(follow link for more context):DynamicData/src/DynamicData/Cache/Internal/InnerJoin.cs
Line 106 in b38c0d0
It appears that for an inner join, if a right value updates its left key, then
InnerJoinwill fail to remove it from the results if it no longer joins.That's because on update of right values, results are removed only based on the current value of the left key, not the previous. To fix this, on update, It would seem that both current/previous left keys need to be taken into account.
I haven't had the time to look into this further / confirm, but I wanted to raise an issue here before I lose sight of it.