예제 #1
0
 private List <LinkedChild> GetLinkedChildrenInternal()
 {
     return(LibraryManager.RootFolder.Children
            .OfType <Folder>()
            .Where(i => i.Path != null && PhysicalLocations.Contains(i.Path, StringComparer.OrdinalIgnoreCase))
            .SelectMany(c => c.LinkedChildren)
            .ToList());
 }
예제 #2
0
 private IEnumerable <BaseItem> GetActualChildren()
 {
     return
         (LibraryManager.RootFolder.Children
          .OfType <Folder>()
          .Where(i => i.Path != null && PhysicalLocations.Contains(i.Path, StringComparer.OrdinalIgnoreCase))
          .SelectMany(c => c.Children));
 }
예제 #3
0
        /// <summary>
        /// Finds an item by path, recursively
        /// </summary>
        /// <param name="path">The path.</param>
        /// <returns>BaseItem.</returns>
        /// <exception cref="System.ArgumentNullException"></exception>
        public BaseItem FindByPath(string path)
        {
            if (string.IsNullOrEmpty(path))
            {
                throw new ArgumentNullException();
            }

            if (string.Equals(Path, path, StringComparison.OrdinalIgnoreCase))
            {
                return(this);
            }

            if (PhysicalLocations.Contains(path, StringComparer.OrdinalIgnoreCase))
            {
                return(this);
            }

            return(RecursiveChildren.FirstOrDefault(i => string.Equals(i.Path, path, StringComparison.OrdinalIgnoreCase) ||
                                                    (!i.IsFolder && !i.IsInMixedFolder && string.Equals(i.ContainingFolderPath, path, StringComparison.OrdinalIgnoreCase)) ||
                                                    i.PhysicalLocations.Contains(path, StringComparer.OrdinalIgnoreCase)));
        }
예제 #4
0
 public IEnumerable <Folder> GetPhysicalParents()
 {
     return(LibraryManager.RootFolder.Children
            .OfType <Folder>()
            .Where(i => i.Path != null && PhysicalLocations.Contains(i.Path, StringComparer.OrdinalIgnoreCase)));
 }