- Details
- Written by: Stanko Milosev
- Category: C#
- Hits: 3865
using (JsonDocument document = JsonDocument.Parse(doc))
{
Console.WriteLine($"plus_code: {document.RootElement.GetProperty("plus_code")}");
foreach (JsonElement element in document.RootElement.GetProperty("results").EnumerateArray())
{
foreach (JsonElement addComp in element.GetProperty("address_components").EnumerateArray())
{
Console.WriteLine($"long_name: {addComp.GetProperty("long_name")}, short_name: {addComp.GetProperty("short_name")}");
foreach (JsonElement type in addComp.GetProperty("types").EnumerateArray())
{
Console.WriteLine($"type: {type.ToString()}");
}
}
}
}
I have decided to go further using this (Newtonsoft.Json) solution. Just with one line of code:
JObject myJObject = JObject.Parse(doc);I have basically extracted everything I need.
- Details
- Written by: Stanko Milosev
- Category: C#
- Hits: 3534
class IDName
{
public Guid ID;
public string Name;
}
class FirstIDName: IDName { }
class SecondIDName : IDName { }
Then I need one method to fill those classes:
public static void AddToIDName<T>(List<T> iDNameList, string name) where T : IDName, new()
{
iDNameList.Add(new T
{
ID = Guid.NewGuid(),
Name = name
});
}
Here notice constraint "where T : IDName, new()". I needed constraint new because of line: "iDNameList.Add(new T"
Whole example:
using System;
using System.Collections.Generic;
namespace GenericList
{
class Program
{
static void Main(string[] args)
{
List<FirstIDName> firstIDNames = new List<FirstIDName>();
List<SecondIDName> secondIDNames = new List<SecondIDName>();
AddToIDName(firstIDNames, "firstIDNameTestOne");
AddToIDName(firstIDNames, "firstIDNameTestTwo");
AddToIDName(secondIDNames, "secondIDNameTestOne");
AddToIDName(secondIDNames, "secondIDNameTestTwo");
AddToIDName(secondIDNames, "secondIDNameTestThree");
Console.WriteLine("FirstIDName");
foreach (FirstIDName firstIDName in firstIDNames)
{
Console.WriteLine($"id: {firstIDName.ID}, name: {firstIDName.Name}");
}
Console.WriteLine("SecondIDName");
foreach (SecondIDName secondIDName in secondIDNames)
{
Console.WriteLine($"id: {secondIDName.ID}, name: {secondIDName.Name}");
}
Console.WriteLine("");
Console.WriteLine("The end");
Console.ReadKey();
}
public static void AddToIDName<T>(List<T> iDNameList, string name) where T : IDName, new()
{
iDNameList.Add(new T
{
ID = Guid.NewGuid(),
Name = name
});
}
}
}
- Details
- Written by: Stanko Milosev
- Category: C#
- Hits: 4132
using System;
using System.Collections;
using System.Collections.Generic;
namespace GetEnumerator
{
class Program
{
static void Main(string[] args)
{
GetEnumeratorDict getEnumerator = new GetEnumeratorDict();
foreach (KeyValuePair<int, string> getEnumeratorItem in getEnumerator)
{
Console.WriteLine($"getEnumeratorItem: {getEnumeratorItem}");
}
Console.WriteLine("Press any key ");
Console.ReadKey();
}
}
class GetEnumeratorDict : IEnumerable
{
readonly Dictionary<int, string> m_internalDictionary = new Dictionary<int, string>();
public GetEnumeratorDict()
{
m_internalDictionary[1] = "test";
}
IEnumerator IEnumerable.GetEnumerator()
{
return m_internalDictionary.GetEnumerator();
}
}
}
In code line:
IEnumerator IEnumerable.GetEnumerator()
{
return m_internalDictionary.GetEnumerator();
}
You can implement your own OrderBy, something like I already explained hier. Difference between IEnumerator and IEnumerable you can read hier
- Details
- Written by: Stanko Milosev
- Category: C#
- Hits: 3830
My father "Velimir" also had three kids: "Anamaria", "Stanko" and "Nikola"
His sister "Svetlana" had two kids: "Dragan" and "Dragana"
Dragan had one kid "Sanja" and "Dragana" two kids "Jovana" and "Aleksa"
Julka had no kids.
Structure in string looks like this:
"Stanko|Velimir|Anamaria" "Stanko|Velimir|Stanko" "Stanko|Velimir|Nikola" "Stanko|Velimir|Anamaria|Tatjana" "Stanko|Svetlana|Dragan" "Stanko|Svetlana|Dragana" "Stanko|Julka" "Stanko|Svetlana|Dragan|Sanja" "Stanko|Svetlana|Dragana|Jovana" "Stanko|Svetlana|Dragana|Aleksa"Main code:
using System.Collections.Generic;
namespace TreeExample
{
class Program
{
static void Main(string[] args)
{
List<string> treeDescriptions = new List<string> { "Stanko|Velimir|Anamaria" };
treeDescriptions.Add("Stanko|Velimir|Stanko");
treeDescriptions.Add("Stanko|Velimir|Nikola");
treeDescriptions.Add("Stanko|Velimir|Anamaria|Tatjana");
treeDescriptions.Add("Stanko|Svetlana|Dragan");
treeDescriptions.Add("Stanko|Svetlana|Dragana");
treeDescriptions.Add("Stanko|Julka");
treeDescriptions.Add("Stanko|Svetlana|Dragan|Sanja");
treeDescriptions.Add("Stanko|Svetlana|Dragana|Jovana");
treeDescriptions.Add("Stanko|Svetlana|Dragana|Aleksa");
TreeMethods geni = new TreeMethods();
TreeStructure geniStructure;
geniStructure = geni.CreateStructure(treeDescriptions);
}
}
}
Class:
using System;
using System.Collections.Generic;
namespace TreeExample
{
class TreeStructure
{
public string Name { get; set; }
public List<TreeStructure> Children;
}
class TreeMethods
{
private TreeStructure CreateTree(string structure, TreeStructure parentTree)
{
if (string.IsNullOrWhiteSpace(structure))
{
return null;
}
else
{
string[] levels = structure.Split('|');
if (levels.Length > 1)
structure = structure.Substring(levels[0].Length + 1, structure.Length - levels[0].Length - 1);
else
structure = string.Empty;
if (parentTree is null)
{
parentTree = new TreeStructure();
parentTree.Name = levels[0];
if (!string.IsNullOrWhiteSpace(structure))
{
parentTree.Children = new List<TreeStructure>();
parentTree.Children.Add(CreateTree(structure, null));
}
}
else if (parentTree.Children is null)
{
if (!string.IsNullOrWhiteSpace(structure))
{
parentTree.Children = new List<TreeStructure>();
parentTree.Children.Add(CreateTree(structure, null));
}
}
else
{
bool found = false;
foreach (TreeStructure child in parentTree.Children)
{
string[] levelsChildren = structure.Split('|');
if (!(child is null))
{
if (string.Equals(child.Name, levelsChildren[0], StringComparison.InvariantCultureIgnoreCase))
{
CreateTree(structure, child);
}
}
}
foreach (TreeStructure child in parentTree.Children)
{
string[] levelsChildren = structure.Split('|');
if (!(child is null))
{
found = string.Equals(child.Name, levelsChildren[0], StringComparison.InvariantCultureIgnoreCase);
if (found)
{
break;
}
}
}
if (!found && !string.IsNullOrWhiteSpace(structure))
{
parentTree.Children.Add(CreateTree(structure, null));
}
}
}
//there are no more leafs, go out
return parentTree;
}
public TreeStructure CreateStructure(List<string> structures)
{
TreeStructure treeStructure = null;
foreach (string structure in structures)
{
int level = 0;
string[] rootChildren = structure.Split('|');
treeStructure = CreateTree(structure, treeStructure);
}
return treeStructure;
}
}
}