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); } }
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)); }
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)); } }