AutobiographicMemory.AM.LastEventIdPropertyCalculator C# (CSharp) Method

LastEventIdPropertyCalculator() private method

private LastEventIdPropertyCalculator ( IQueryContext context, Name type, Name subject, Name def, Name target ) : IEnumerable
context IQueryContext
type Name
subject Name
def Name
target Name
return IEnumerable
        private IEnumerable<DynamicPropertyResult> LastEventIdPropertyCalculator(IQueryContext context, Name type, Name subject, Name def, Name target)
        {
            if(!context.Perspective.Match(Name.SELF_SYMBOL))
                yield break;

            var key = Name.BuildName(EVT_NAME, type, subject, def, target);

            ulong min = ulong.MinValue;
            var lastEvents = m_registry.Values.OrderByDescending(e => e.Timestamp).TakeWhile(e =>
            {
                if (e.Timestamp >= min)
                {
                    min = e.Timestamp;
                    return true;
                }
                return false;
            });

            foreach (var le in lastEvents)
            {
                IEnumerable<Substitution> set;
                if (Unifier.Unify(le.EventName, key, out set))
                    yield return new DynamicPropertyResult(Name.BuildName(le.Id), new SubstitutionSet(set));
            }
        }