Поиск имен в Dictionary по первым двум буквам - C#
Формулировка задачи:
Задание такое:
"В отпуске Вася не тратил время зря, а заводил новые знакомства. Он знакомился с другими крутыми программистами, отдыхающими с ним в одном отеле, и записывал их email-ы.
В его дневнике получилось много записей вида <name>:<email>.
Чтобы искать записи было быстрее, он решил сделать словарь, в котором по двум первым буквам имени можно найти все записи его дневника.
Вася уже написал функцию GetContacts, которая считывает его каракули из блокнота. Помогите ему сделать все остальное!"
Я вроде посмотрел возвращает верное значение словаря. А чеккер на сайт с он-лайн курсами по программированию не принимает(скрин снизу). Я метод GetContacts() написал просто, чтобы удобно было отлаживать задание и не все элементы списка туда внес. Если начнете разбираться желательно слишком не усложнять код. Заранее спасибо!
using System;
using System.Collections.Generic;
using System.Linq;
namespace UsefullAcquaintancesTask
{
class Program
{
private static List<string> GetContacts()
{
List<string> contacts = new List<string>();
contacts.Add("Ваня:removed@mail.ru");
contacts.Add("Вася:removed@mail.ru");
contacts.Add("Ваня:removed@mail.ru");
contacts.Add("Саша:removed@mail.ru");
contacts.Add("Саша:removed@mail.ru");
contacts.Add("Паша:removed@mail.ru");
contacts.Add("Юрий:removed@mail.ru");
contacts.Add("Гена:removed@mail.ru");
return contacts;
}
private static Dictionary<string, List<string>> OptimizeContacts(List<string> contacts)
{
var dictionary = new Dictionary<string, List<string>>();
contacts.AddRange(GetContacts());
string keyForSearch = Console.ReadLine();
List<string> list =
(from a in contacts where a.StartsWith(keyForSearch)select a).ToList<string>();
if (!dictionary.ContainsKey(keyForSearch)) dictionary[keyForSearch] = list;
return dictionary;
}
static void Main(string[] args)
{
var dict = OptimizeContacts(new List<string>());
}
}
}Решение задачи: «Поиск имен в Dictionary по первым двум буквам»
textual
Листинг программы
private static Dictionary<string, List<string>> OptimizeContacts(List<string> contacts)
{
var dictionary = new Dictionary<string, List<string>>();
foreach(var c in contacts)
{
var key = string.Concat(c.Split(new char[]{':'})[0].Take(2));
if(!dictionary.ContainsKey(key)) dictionary.Add(key,contacts.Where(x=>x.StartsWith(key)).ToList());
}
return dictionary;
}