private static IEnumerable <IGrouping <string, FolderTreeItem> > CreateGrouping_AllItems(FolderItem rootFolder) { return //From root folder ... (rootFolder //Select all descendant files and folders ... .DescendantItems() //Then order the items by item path ... .OrderBy(item => item.ItemPath) //And put all of them in a single group .GroupBy(item => "All Items")); }
private static IEnumerable <IGrouping <string, FolderTreeItem> > CreateGrouping_Keywords(FolderItem rootFolder) { return //From root folder ... (rootFolder //Select all descendant files and folders ... .DescendantItems() //Then order the items by item path ... .OrderBy(item => item.ItemPath) //For each item, get the keywords in its name as a set of distinct //FolderTreeItemAttribute<string> objects and flatten the objects into a single list .SelectMany(item => item.ItemNameKeywords()) //Then group all items by the keywords .GroupBy(itemAttr => itemAttr.Value, itemAttr => itemAttr.Item) //Then order the groups by thier keys .OrderBy(item => item.Key)); }