BuildingCoder.ExtensionMethods.FindAllViewsWhereAllElementsVisible C# (CSharp) Method

FindAllViewsWhereAllElementsVisible() public static method

Return all views that display any of the given elements.
public static FindAllViewsWhereAllElementsVisible ( this elements ) : IEnumerable
elements this
return IEnumerable
        public static IEnumerable<View> FindAllViewsWhereAllElementsVisible(
            this IEnumerable<Element> elements)
        {
            if( null == elements )
              {
            throw new ArgumentNullException( "elements" );
              }

              //if( 0 == elements.Count )
              //{
              //  return new List<View>();
              //}

              Element e1 = elements.FirstOrDefault<Element>();

              if( null == e1 )
              {
            return new List<View>();
              }

              Document doc = e1.Document;

              IEnumerable<View> relevantViewList
            = doc.FindAllViewsThatCanDisplayElements();

              IEnumerable<ElementId> idsToCheck
            = ( from e in elements select e.Id );

              return (
            from v in relevantViewList
            let idList
              = new FilteredElementCollector( doc, v.Id )
            .WhereElementIsNotElementType()
            .ToElementIds()
            where !idsToCheck.Except( idList ).Any()
            select v );
        }