/// <summary> /// Example of how you can filter when keys follow a hierarchical pattern /// </summary> private static void QuickFilter() { DirectDictionaryLayerSimple <int> layer = new DirectDictionaryLayerSimple <int>(); layer["--1--A--A1"] = 1; layer["--1--A--A2"] = 2; layer["--1--A--A3"] = 3; layer["--1--B--A1"] = 4; layer["--1--B--A2"] = 5; layer["--1--B--A3"] = 6; layer["--1--B--A4"] = 7; DirectDictionaryLayer <int, SimpleContainer <int> > subLayerA = layer.Filter("--1--A".ConvertToNibbles()); DirectDictionaryLayer <int, SimpleContainer <int> > subLayerB = layer.Filter("--1--B".ConvertToNibbles()); Console.WriteLine("Part A"); subLayerA.ExecuteOnAllItems((v, k) => { Console.WriteLine($"Value [{v}] at SubKey [{k.ConvertFromFromNibbles()}]"); }); Console.WriteLine("Part B"); subLayerB.ExecuteOnAllItems((v, k) => { Console.WriteLine($"Value [{v}] at SubKey [{k.ConvertFromFromNibbles()}]"); }); }
/// <summary> /// An example of some of the ways data can be stored and retrieved from DirectDictionaryLayer /// </summary> private static void GetAndSet() { DirectDictionaryLayerSimple <int> layer = new DirectDictionaryLayerSimple <int>(); layer["123"] = 1; layer["123"]["456"] = 2; layer.Set("1234-567".ConvertToNibbles(), 3); layer[(int)2000] = 5; layer[(long)2000] = 6; layer['A']['B'] = 7; int four = layer.GetOrSet("1234-567-89".ConvertToNibbles(), () => { return(4); }); Console.WriteLine(layer["123"]); Console.WriteLine(layer["1"]["23"]); Console.WriteLine(layer["123456"]); Console.WriteLine(layer["123"]["456"]); Console.WriteLine(layer["1234-567"]); Console.WriteLine(layer["1234"]["-"]["567"]); Console.WriteLine(four); Console.WriteLine(layer["1234-567-89"]); Console.WriteLine(layer[(int)2000]); Console.WriteLine(layer[(long)2000]); Console.WriteLine(layer['A']['B']); Console.WriteLine(layer.Get("123456")); }
private static void Delete() { DirectDictionaryLayerSimple <int> layer = new DirectDictionaryLayerSimple <int>(); layer["asd"] = 5; layer["asdr4"] = 6; layer["bsd"] = 5; layer["bsdr4"] = 6; layer["csd"] = 5; layer["csdr4"] = 6; layer.DeleteWithoutShrink("asd".ConvertToNibbles()); layer.DeleteWithoutShrink("asdr4".ConvertToNibbles()); layer.DeleteWithoutShrink("bsd".ConvertToNibbles()); layer.DeleteWithoutShrink("bsdr4".ConvertToNibbles()); layer.DeleteWithoutShrink("csd".ConvertToNibbles()); layer.DeleteWithoutShrink("csdr4".ConvertToNibbles()); layer.Shrink(); }
/// <summary> /// Example of how DirectDictionaryLayer can loop around on itself when you set up to do so /// </summary> private static void LoopAround() { DirectDictionaryLayerSimple <int> layer = new DirectDictionaryLayerSimple <int>(); layer.SetLayer("--1".ConvertToNibbles(), layer, false); layer.SetLayer("---2".ConvertToNibbles(), layer, false); layer["--1"] = 1; layer["---2"] = 2; Console.WriteLine(layer["--1"]); Console.WriteLine(layer["--1--1"]); Console.WriteLine(layer["--1--1--1"]); Console.WriteLine(layer["--1--1--1---2---2--1"]); Console.WriteLine(layer["---2"]); Console.WriteLine(layer["---2---2"]); Console.WriteLine(layer["---2---2---2"]); Console.WriteLine(layer["---2---2--1--1---2--1---2"]); }
/// <summary> /// Example of how DirectDictionaryLayer can be use for grouping /// </summary> private static void Grouping() { List <AnimalProperty> mixedAnimalFeatures = new List <AnimalProperty>() { new AnimalProperty() { AnimalName = "horse", AnimalFeature = "kicks people" }, new AnimalProperty() { AnimalName = "dog", AnimalFeature = "excited" }, new AnimalProperty() { AnimalName = "cat", AnimalFeature = "loveable" }, new AnimalProperty() { AnimalName = "horse", AnimalFeature = "evil" }, new AnimalProperty() { AnimalName = "dog", AnimalFeature = "barks" }, new AnimalProperty() { AnimalName = "dog", AnimalFeature = "protective" }, new AnimalProperty() { AnimalName = "cat", AnimalFeature = "soft" }, new AnimalProperty() { AnimalName = "horse", AnimalFeature = "conducts psychological warfare" }, new AnimalProperty() { AnimalName = "dog", AnimalFeature = "eats barf" }, new AnimalProperty() { AnimalName = "cat", AnimalFeature = "fluffy paws" }, new AnimalProperty() { AnimalName = "horse", AnimalFeature = "bites" }, new AnimalProperty() { AnimalName = "dog", AnimalFeature = "friendly" } }; DirectDictionaryLayerSimple <List <AnimalProperty> > layer = new DirectDictionaryLayerSimple <List <AnimalProperty> >(); //Do grouping foreach (AnimalProperty animalThing in mixedAnimalFeatures) { List <AnimalProperty> groupList = layer.GetOrSet(animalThing.AnimalName.ConvertToNibbles(), () => { return(new List <AnimalProperty>()); }); groupList.Add(animalThing); } //Done grouping List <AnimalProperty> dogStuff = layer["dog"]; List <AnimalProperty> catStuff = layer["cat"]; List <AnimalProperty> horseStuff = layer["horse"]; Console.WriteLine("\nDog features:"); for (int i = 0; i < dogStuff.Count; ++i) { Console.WriteLine(dogStuff[i].AnimalFeature); } Console.WriteLine(); Console.WriteLine("Cat features:"); for (int i = 0; i < catStuff.Count; ++i) { Console.WriteLine(catStuff[i].AnimalFeature); } Console.WriteLine(); Console.WriteLine("Horse features:"); for (int i = 0; i < horseStuff.Count; ++i) { Console.WriteLine(horseStuff[i].AnimalFeature); } Console.WriteLine(); }