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;
            }
        }
예제 #2
0
 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;
     })));
 }