コード例 #1
0
        /// <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;
        }
コード例 #2
0
        /// <summary>
        /// Lists the phonebook entries with paging.
        /// </summary>
        /// <param name="startIndex">The start index.</param>
        /// <param name="count">The count.</param>
        /// <returns>IEnumerable&lt;ContactNameComparator&gt;.</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;
        }