// #TODO GetPath will be expensive !!!! public List <CodeSnippet> FindNodes(string find) { DictionaryList <CodeSnippet, string> _items = CodeLib.Instance.CodeSnippets.Where(p => LocalUtils.LastPart(p.GetPath()).ToLower().Contains(find.ToLower())).ToDictionaryList(p => p.Id); _items.RegisterLookup("PATH", p => p.GetPath()); DictionaryList <CodeSnippet, string> _paths = new DictionaryList <CodeSnippet, string>(p => p.GetPath()); foreach (CodeSnippet item in _items) { List <CodeSnippet> _parents = GetParents(item.GetPath()); foreach (CodeSnippet parent in _parents) { if (!_paths.ContainsKey(parent.GetPath()) && (_items.Lookup("PATH", parent.GetPath()).FirstOrDefault() == null)) { _paths.Add(parent); } } } _items.AddRange(_paths); return(_items.ToList()); }
public void AddingNullRangeDoesNothing() { var target = new DictionaryList<string, object> { { "key1", 11 } }; target.AddRange(null); Assert.AreEqual(1, target.Count); Assert.AreEqual(1, target["key1"].Count); Assert.AreEqual(11, target["key1"][0]); }
public void AddsRangeOfValues() { var target = new DictionaryList<string, object> { { "key1", 11 } }; var source = new DictionaryList<string, object> { { "key1", 111 }, { "key2", 22 }, { "key2", 222 }, { "key3", "3" } }; target.AddRange(source); Assert.AreEqual(3, target.Count); Assert.AreEqual(2, target["key1"].Count); Assert.AreEqual(11, target["key1"][0]); Assert.AreEqual(111, target["key1"][1]); Assert.AreEqual(2, target["key2"].Count); Assert.AreEqual(22, target["key2"][0]); Assert.AreEqual(222, target["key2"][1]); Assert.AreEqual(1, target["key3"].Count); Assert.AreEqual("3", target["key3"][0]); }