private void MenuItemFindTopLevelFolder_Click(object sender, RoutedEventArgs e) { string uri = NineWorldsDeep.UI.Prompt.ForNwdUri(); Parser.Parser p = new Parser.Parser(); string nodeName = p.GetKeyNode(0, uri); MultiMap<string, NwdPortableDeviceObject> uriNodeToPdos = new MultiMap<string, NwdPortableDeviceObject>(); var col = new NwdPortableDeviceCollection(); try { col.Refresh(); } catch (Exception ex) { Display.Exception(ex); } foreach (var device in col) { if (device.RootFolder != null) { //device level foreach (NwdPortableDeviceObject pdo in device.RootFolder.Files) { //internal vs external storage level if (pdo is NwdPortableDeviceFolder) { NwdPortableDeviceFolder folder = (NwdPortableDeviceFolder)pdo; folder.Refresh(device); if (folder.Files != null) { foreach (NwdPortableDeviceObject pdoTopLevelFolderOrFile in folder.Files) { //top level folder level if (pdoTopLevelFolderOrFile.Name.Equals(nodeName)) { uriNodeToPdos.Add(nodeName, pdoTopLevelFolderOrFile); } } } } } } } MessageBox.Show("found " + uriNodeToPdos[nodeName].Count() + " matching nodes"); }