public IndexedSagaDictionary() { _indices = new Dictionary <string, IndexedSagaProperty <TSaga> >(); BuildIndices(); _indexById = _indices["CorrelationId"]; }
public IEnumerable <TSaga> Where(ISagaFilter <TSaga> filter) { lock (_lock) { IndexedSagaProperty <TSaga> index = HasIndexFor(filter.FilterExpression); if (index == null) { return(_indexById.Where(filter.Filter).ToList()); } object rightValue = GetRightValue(filter.FilterExpression); return(index.Where(rightValue, filter.Filter).ToList()); } }
public IEnumerable <SagaInstance <TSaga> > Where(ISagaQuery <TSaga> query) { lock (_lock) { IndexedSagaProperty <TSaga> index = HasIndexFor(query.FilterExpression); if (index == null) { return(_indexById.Where(query.GetFilter()).ToList()); } object rightValue = GetRightValue(query.FilterExpression); return(index.Where(rightValue, query.GetFilter()).ToList()); } }