diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2016-05-09 11:49:42 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2016-05-09 11:49:42 -0400 |
| commit | 38fe2fa62df4c4444bf9b85578e0c0db0fcf5b77 (patch) | |
| tree | 992bd087e4b451bfecfd28499896e2281b5f0b31 /MediaBrowser.Controller | |
| parent | 3bf2cf89853f1f95d3f198809df95e759b19fc63 (diff) | |
| parent | c47808590291070bcaa33c0e1807f8e10f539487 (diff) | |
Merge branch 'beta' of https://github.com/MediaBrowser/Emby into beta
Diffstat (limited to 'MediaBrowser.Controller')
| -rw-r--r-- | MediaBrowser.Controller/Entities/Folder.cs | 26 |
1 files changed, 17 insertions, 9 deletions
diff --git a/MediaBrowser.Controller/Entities/Folder.cs b/MediaBrowser.Controller/Entities/Folder.cs index 457a0b3ab..949b333d4 100644 --- a/MediaBrowser.Controller/Entities/Folder.cs +++ b/MediaBrowser.Controller/Entities/Folder.cs @@ -1293,33 +1293,41 @@ namespace MediaBrowser.Controller.Entities public IList<BaseItem> GetRecursiveChildren(Func<BaseItem, bool> filter) { - var list = new List<BaseItem>(); + var result = new Dictionary<Guid, BaseItem>(); - AddChildrenToList(list, true, filter); + AddChildrenToList(result, true, true, filter); - return list; + return result.Values.ToList(); } /// <summary> /// Adds the children to list. /// </summary> - /// <param name="list">The list.</param> - /// <param name="recursive">if set to <c>true</c> [recursive].</param> - /// <param name="filter">The filter.</param> - private void AddChildrenToList(List<BaseItem> list, bool recursive, Func<BaseItem, bool> filter) + private void AddChildrenToList(Dictionary<Guid,BaseItem> result, bool includeLinkedChildren, bool recursive, Func<BaseItem, bool> filter) { foreach (var child in Children) { if (filter == null || filter(child)) { - list.Add(child); + result[child.Id] = child; } if (recursive && child.IsFolder) { var folder = (Folder)child; - folder.AddChildrenToList(list, true, filter); + folder.AddChildrenToList(result, includeLinkedChildren, true, filter); + } + } + + if (includeLinkedChildren) + { + foreach (var child in GetLinkedChildren()) + { + if (filter == null || filter(child)) + { + result[child.Id] = child; + } } } } |
