Пример #1
0
        public void Group(IEnumerable <IEvent> events, EventGrouping <TId> grouping)
        {
            var matching = events.Where(x => x.Data is TEvent);
            var groups   = matching.GroupBy(x => _func(x.Data.As <TEvent>()));

            foreach (var eventGroups in groups)
            {
                grouping.AddRange(eventGroups.Key, eventGroups);
            }
        }
Пример #2
0
        internal TenantSliceGroup <TDoc, TId> Slice(ITenant tenant, IList <IEvent> events)
        {
            var grouping = new EventGrouping <TId>();

            foreach (var grouper in _groupers)
            {
                grouper.Group(events, grouping);
            }

            return(grouping.BuildSlices <TDoc>(tenant, _fanouts));
        }
Пример #3
0
        public void Group(IEnumerable <IEvent> events, EventGrouping <TId> grouping)
        {
            var matching = events.Where(x => x.Data is TEvent)
                           .SelectMany(@event => _func(@event.Data.As <TEvent>()).Select(id => (id, @event)));

            var groups = matching.GroupBy(x => x.id);

            foreach (var eventGroups in groups)
            {
                grouping.AddRange(eventGroups.Key, eventGroups.Select(x => x.@event));
            }
        }