@@ -24,7 +24,7 @@ internal sealed class TrackingItem : ITrackingItem
2424
2525 public TrackingItemState State { get ; private set ; }
2626
27- public IReadOnlyList < ChangedValue > ChangedValues => cachedChangedValues ??= CalculateChangedValues ( ) . ToList ( ) . AsReadOnly ( ) ;
27+ public IReadOnlyList < ChangedValue > ChangedValues => cachedChangedValues ??= CalculateChangedValues ( ) ;
2828
2929 public void MergeWith ( TrackingItem source )
3030 {
@@ -47,29 +47,33 @@ public void MergeWith(TrackingItem source)
4747 State = source . State ;
4848 }
4949
50- private IEnumerable < ChangedValue > CalculateChangedValues ( )
50+ private IReadOnlyList < ChangedValue > CalculateChangedValues ( )
5151 {
5252 var originalValues = RawData . Origin ;
5353 var changedValues = RawData . Difference ;
5454
55- if ( State == TrackingItemState . Created ) {
55+ if ( State == TrackingItemState . Created ) {
5656 originalValues = null ;
5757 changedValues = RawData . Origin ;
5858 }
5959
60- foreach ( var field in Key . TypeInfo . Fields . Where ( f => f . Column != null ) ) {
60+ var changedValuesList = new List < ChangedValue > ( Key . TypeInfo . Fields . Count ) ;
61+
62+ foreach ( var field in Key . TypeInfo . Fields . Where ( f => f . Column != null ) ) {
6163 object origValue = null , changedValue = null ;
6264 int fieldIndex = field . MappingInfo . Offset ;
6365 TupleFieldState fieldState ;
64- if ( originalValues != null )
66+ if ( originalValues != null )
6567 origValue = originalValues . GetValue ( fieldIndex , out fieldState ) ;
66- if ( changedValues != null ) {
68+ if ( changedValues != null ) {
6769 changedValue = changedValues . GetValue ( fieldIndex , out fieldState ) ;
6870 if ( ! fieldState . IsAvailable ( ) )
6971 continue ;
7072 }
71- yield return new ChangedValue ( field , origValue , changedValue ) ;
73+ changedValuesList . Add ( new ChangedValue ( field , origValue , changedValue ) ) ;
7274 }
75+
76+ return changedValuesList . AsReadOnly ( ) ;
7377 }
7478
7579 private void MergeWith ( Tuple difference )
0 commit comments