using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
public class ContactNumber
{
public int PhoneNumber { get; set; }
public ContactNumber()
{
}
public ContactNumber(int numbers)
{
PhoneNumber = numbers;
}
}
internal class User
{
public string ID { get; set; }
public string Name { get; set; }
public List<ContactNumber> AddressBook { get; set; }
}
internal class Program
{
private static void Main(string[] args)
{
Dictionary<int, User> dic = new Dictionary<int, User>();
dic.Add(1, new User { ID = "id1", Name = "name1" });
dic.Add(2, new User { ID = "id2", Name = "name2" });
dic.Add(3, new User { ID = "id3", Name = "name3", AddressBook = new List<ContactNumber>(){new ContactNumber(3432),new ContactNumber(3213)} });
User user = dic.Where(z => z.Value.ID == "id3").FirstOrDefault().Value;
Console.WriteLine(user.Name);
DisplayList(user);
//Console.WriteLine(user.AddressBook.ToString());
//update the list
addOrUpdate(dic,3,user);
//var used = new User { ID = "id1", Name = "Harry" };
//dic[1] = used;
user = dic.Where(z => z.Value.ID == "id3").FirstOrDefault().Value;
Console.WriteLine(user.Name);
DisplayList(user);
}
private static void DisplayList(User user)
{
foreach (ContactNumber number in user.AddressBook)
{
Console.WriteLine(number.PhoneNumber);
}
}
//determin list length
public static void addOrUpdate(Dictionary<int, User> dic, int key, User user)
{
//sets a new user data and just replaces it in the dictionary
//var used = new User { ID = "id1", Name = "Harry" };
var used = new User{ ID = "id3", Name = "Henry" ,AddressBook = new List<ContactNumber>(){new ContactNumber(3111),new ContactNumber(4444)}};
if (dic.TryGetValue(key, out user))
{
// yay, value exists!
dic[key] = used;
}
else
{
// darn, lets add the value
dic.Add(key, used);
}
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLkxpbnE7CnVzaW5nIFN5c3RlbS5UZXh0Owp1c2luZyBTeXN0ZW0uVGhyZWFkaW5nLlRhc2tzOwoKICBwdWJsaWMgY2xhc3MgQ29udGFjdE51bWJlcgogICAgewoKICAgICAgICBwdWJsaWMgaW50IFBob25lTnVtYmVyIHsgZ2V0OyBzZXQ7IH0KICAgICAgICAKICAgICAgICBwdWJsaWMgQ29udGFjdE51bWJlcigpCiAgICAgICAgewoKICAgICAgICB9CiAgICAgICAgcHVibGljIENvbnRhY3ROdW1iZXIoaW50IG51bWJlcnMpCiAgICAgICAgewogICAgICAgICAgICBQaG9uZU51bWJlciA9IG51bWJlcnM7CiAgICAgICAgfQogICAgfQogaW50ZXJuYWwgY2xhc3MgVXNlcgogICAgewogICAgICAgIHB1YmxpYyBzdHJpbmcgSUQgeyBnZXQ7IHNldDsgfQoKICAgICAgICBwdWJsaWMgc3RyaW5nIE5hbWUgeyBnZXQ7IHNldDsgfQoKICAgICAgICBwdWJsaWMgTGlzdDxDb250YWN0TnVtYmVyPiBBZGRyZXNzQm9vayB7IGdldDsgc2V0OyB9CiAgICB9CgogICAgaW50ZXJuYWwgY2xhc3MgUHJvZ3JhbQogICAgewogICAgCiAgICAgICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCBNYWluKHN0cmluZ1tdIGFyZ3MpCiAgICAgICAgewogICAgICAgICAgICBEaWN0aW9uYXJ5PGludCwgVXNlcj4gZGljID0gbmV3IERpY3Rpb25hcnk8aW50LCBVc2VyPigpOwogICAgICAgICAgICBkaWMuQWRkKDEsIG5ldyBVc2VyIHsgSUQgPSAiaWQxIiwgTmFtZSA9ICJuYW1lMSIgfSk7CiAgICAgICAgICAgIGRpYy5BZGQoMiwgbmV3IFVzZXIgeyBJRCA9ICJpZDIiLCBOYW1lID0gIm5hbWUyIiB9KTsKICAgICAgICAgICAgZGljLkFkZCgzLCBuZXcgVXNlciB7IElEID0gImlkMyIsIE5hbWUgPSAibmFtZTMiLCBBZGRyZXNzQm9vayA9IG5ldyBMaXN0PENvbnRhY3ROdW1iZXI+KCl7bmV3IENvbnRhY3ROdW1iZXIoMzQzMiksbmV3IENvbnRhY3ROdW1iZXIoMzIxMyl9IH0pOwoKICAgICAgICAgICAgVXNlciB1c2VyID0gZGljLldoZXJlKHogPT4gei5WYWx1ZS5JRCA9PSAiaWQzIikuRmlyc3RPckRlZmF1bHQoKS5WYWx1ZTsKCiAgICAgICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKHVzZXIuTmFtZSk7CiAgICAgICAgICAgIERpc3BsYXlMaXN0KHVzZXIpOwogICAgICAgICAgICAvL0NvbnNvbGUuV3JpdGVMaW5lKHVzZXIuQWRkcmVzc0Jvb2suVG9TdHJpbmcoKSk7CiAgICAgICAgICAgIAogICAgICAgICAgICAvL3VwZGF0ZSB0aGUgbGlzdAogICAgICAgICAgICBhZGRPclVwZGF0ZShkaWMsMyx1c2VyKTsKCiAgICAgICAgICAgIC8vdmFyIHVzZWQgPSBuZXcgVXNlciB7IElEID0gImlkMSIsIE5hbWUgPSAiSGFycnkiIH07CiAgICAgICAgICAgIC8vZGljWzFdID0gdXNlZDsKCiAgICAgICAgICAgICB1c2VyID0gZGljLldoZXJlKHogPT4gei5WYWx1ZS5JRCA9PSAiaWQzIikuRmlyc3RPckRlZmF1bHQoKS5WYWx1ZTsKCgogICAgICAgICAgICBDb25zb2xlLldyaXRlTGluZSh1c2VyLk5hbWUpOwogICAgICAgICAgICBEaXNwbGF5TGlzdCh1c2VyKTsKICAgICAgICAgICAgCgogICAgICAgIH0KCiAgICAgICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCBEaXNwbGF5TGlzdChVc2VyIHVzZXIpCiAgICAgICAgewogICAgICAgICAgICBmb3JlYWNoIChDb250YWN0TnVtYmVyIG51bWJlciBpbiB1c2VyLkFkZHJlc3NCb29rKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBDb25zb2xlLldyaXRlTGluZShudW1iZXIuUGhvbmVOdW1iZXIpOwoKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy9kZXRlcm1pbiBsaXN0IGxlbmd0aAogICAgICAgIAogICAgICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBhZGRPclVwZGF0ZShEaWN0aW9uYXJ5PGludCwgVXNlcj4gZGljLCBpbnQga2V5LCBVc2VyIHVzZXIpCiAgICAgICAgewogICAgICAgICAgICAvL3NldHMgYSBuZXcgdXNlciBkYXRhIGFuZCBqdXN0IHJlcGxhY2VzIGl0IGluIHRoZSBkaWN0aW9uYXJ5CiAgICAgICAgICAgIC8vdmFyIHVzZWQgPSBuZXcgVXNlciB7IElEID0gImlkMSIsIE5hbWUgPSAiSGFycnkiIH07CiAgICAgICAgICAgIHZhciB1c2VkID0gbmV3IFVzZXJ7IElEID0gImlkMyIsIE5hbWUgPSAiSGVucnkiICxBZGRyZXNzQm9vayA9IG5ldyBMaXN0PENvbnRhY3ROdW1iZXI+KCl7bmV3IENvbnRhY3ROdW1iZXIoMzExMSksbmV3IENvbnRhY3ROdW1iZXIoNDQ0NCl9fTsKICAgICAgICAgIAogICAgICAgICAgICBpZiAoZGljLlRyeUdldFZhbHVlKGtleSwgb3V0IHVzZXIpKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAvLyB5YXksIHZhbHVlIGV4aXN0cyEKICAgICAgICAgICAgICAgIGRpY1trZXldID0gdXNlZDsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgLy8gZGFybiwgbGV0cyBhZGQgdGhlIHZhbHVlIAogICAgICAgICAgICAgICAgZGljLkFkZChrZXksIHVzZWQpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgIH0=