/// <summary> /// Adds a new contact to phonebook. /// </summary> /// <param name="contactName">Name of the contact.</param> /// <param name="phoneNumbers">The phone numbers.</param> /// <returns><c>true</c> if the specified key is found, <c>false</c> otherwise.</returns> public bool AddPhone(string contactName, IEnumerable<string> phoneNumbers) { var nameToLower = contactName.ToLowerInvariant(); ContactNameComparator contactNameComparator; var hasSpecifiedKey = !this.dictionary.TryGetValue(nameToLower, out contactNameComparator); if (hasSpecifiedKey) { contactNameComparator = new ContactNameComparator { ContactName = contactName, PhoneNumbers = new SortedSet<string>() }; this.dictionary.Add(nameToLower, contactNameComparator); this.sorted.Add(contactNameComparator); } foreach (var num in phoneNumbers) { this.multiDictionary.Add(num, contactNameComparator); } contactNameComparator.PhoneNumbers.UnionWith(phoneNumbers); return hasSpecifiedKey; }
/// <summary> /// Lists the phonebook entries with paging. /// </summary> /// <param name="startIndex">The start index.</param> /// <param name="count">The count.</param> /// <returns>IEnumerable<ContactNameComparator>.</returns> public IEnumerable<ContactNameComparator> ListEntries(int startIndex, int count) { if (startIndex < 0 || startIndex + count > this.dictionary.Count) { Console.WriteLine("Invalid start index or count."); return null; } var list = new ContactNameComparator[count]; for (var i = startIndex; i <= startIndex + count - 1; i++) { var entry = this.sorted[i]; list[i - startIndex] = entry; } return list; }