public FilteredCollection(Func <T, T, SubsetRelation> comparer, SubsetRelation relationToFind, List <T> result = null) { _relationToFind = relationToFind; _inverseRelation = SubsetRelation.Unrelated; switch (_relationToFind) { case SubsetRelation.Superset: _inverseRelation = SubsetRelation.Subset; break; case SubsetRelation.Subset: _inverseRelation = SubsetRelation.Superset; break; case SubsetRelation.Equal: _inverseRelation = SubsetRelation.Different; break; } _comparer = comparer; if (result == null) { _current = new List <T>(); } else { _current = result; } }
private bool IsSubset(IEmergingPattern pat1, IEmergingPattern pat2) { return(pat2.Items.All(x => pat1.Items.Any(y => { SubsetRelation relation = comparer.Compare(y, x); return relation == SubsetRelation.Equal || relation == SubsetRelation.Subset; }))); }