public virtual ObjectFeatureProvider GetObjectSubsetProvider(ObjectFeatureFilter filter) { Contract.Requires(filter != null); Contract.Ensures(Contract.Result<ObjectFeatureProvider>() != null); return new ObjectFeatureProvider(this, filter); }
private ObjectFeatureProvider(ObjectFeatureProvider baseProvider, ObjectFeatureFilter filter) { Contract.Requires(baseProvider != null); Contract.Requires(filter != null); entries = baseProvider.entries; SourceList = ApplyFilter(baseProvider.SourceList, filter); }
private IList ApplyFilter(IList sourceList, ObjectFeatureFilter filter) { Contract.Requires(entries != null); Contract.Requires(entries.Length > 0); if (filter == null) return sourceList; var filteredList = new ArrayList(); for (int idx = 0; idx < sourceList.Count; idx++) { object obj = sourceList[idx]; var values = entries.ToDictionary(e => e.Description.ID, e => e.GetValue(obj)); if (filter(idx, values)) filteredList.Add(obj); } return filteredList.ToArray(); }
public ObjectFeatureProvider(IList sourceList, Strings featureProjections, ObjectFeatureFilter filter = null) { Contract.Requires(sourceList != null); Contract.Requires(featureProjections != null); Contract.Requires(sourceList.Count > 0); Contract.Requires(featureProjections.Count > 0); entries = featureProjections.Select(p => new Entry(this, p, GetObjectType(sourceList), sourceList)).ToArray(); SourceList = ApplyFilter(sourceList, filter); }