Обработать словарь типа Dictionary и на выходе получить ступенчатый массив - C#
Формулировка задачи:
Всем здравствуйте! Я только начинаю познавать программирование (около месяца).Поэтому прошу прощения в возможных неточностях определениях и т.п.
Помогите написать программу которая будет обрабатывать словарь типа Dictionary<string, string> и на выходе получать ступенчатый массив. В каждой строке массива должны хранится ключи словаря у который значения словаря под этими ключами будут одинаковыми. Если в значение в словаре уникально то в массив добавляться не будут. Ниже приведу пример моего не доделанного кода программы.
На выходе должно получится массив
ID0001 ID0003 ID0005 (ключи с "Вася")
ID0002 ID0013 ID0015 ID0016 (ключи с "Юля");
ID0004 ID0009 ID0010 ID0012 (ключи с "Миша")
ID0011 ID0014 ID0017 (ключи с "Саша")
В данном примере заполнения словаря происходит в ручную, и нужно предусмотреть что словарь будит создаваться другим блоком программы.( в итоге нужно получить функцию обработки массива )
Возможно проще использовать массив не Dictionary а просто двумерный массив.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Работа_с_Массивами
{
class Program
{
static void Main(string[] args)
{
//Создаем словарь AAA
var AAA = new Dictionary<string, string>();
//Создаем зубчатый массив
List<string>[][] myArr = new List<string>[4][];
myArr = null;
//Заполняем словарь значениями
AAA.Add("ID0001", "Вася");
AAA.Add("ID0002", "Юля");
AAA.Add("ID0003", "Вася");
AAA.Add("ID0004", "Миша");
AAA.Add("ID0005", "Вася");
AAA.Add("ID0006", "Петя");
AAA.Add("ID0007", "Марина");
AAA.Add("ID0008", "Наташа");
AAA.Add("ID0009", "Миша");
AAA.Add("ID0010", "Миша");
AAA.Add("ID0011", "Саша");
AAA.Add("ID0012", "Миша");
AAA.Add("ID0013", "Юля");
AAA.Add("ID0014", "Саша");
AAA.Add("ID0015", "Юля");
AAA.Add("ID0016", "Юля");
AAA.Add("ID0017", "Саша");
foreach (var BBB in AAA)
{
Console.WriteLine(string.Format("Ключ = {0};Значение={1}", BBB.Key, BBB.Value));
}
Console.ReadLine();
Console.ReadKey();
//Поиск одинаковых значений словаря
int m=0;
int d;
bool f = false;
List<string> r = new List<string>();
for (int i = 0; i < AAA.Count; i++)
{
m = 0;
for (int j = i; j < AAA.Count; j++)
{
d = 0;
if (AAA.ElementAt(i).Value == AAA.ElementAt(j).Value)
{
Console.WriteLine(string.Format("Ключ = {0};Значение={1};i={2}", AAA.ElementAt(j).Key, AAA.ElementAt(j).Value, i.ToString()));
Console.ReadKey();
myArr[m][d].Add(AAA.ElementAt(j).Key);
d++;
}
m++;
}
}
Console.ReadKey();
}
}
} Решение задачи: «Обработать словарь типа Dictionary и на выходе получить ступенчатый массив»
textual
Листинг программы
Dictionary<string, List<string>> dict = new Dictionary<string, List<string>>();
while (Modelparts.MoveNext())
{
Part thismodelpart = Modelparts.Current as Part;
Model.SelectModelObject(thismodelpart.Identifier);
Solid solidPart = thismodelpart.GetSolid();
if (thismodelpart != null)
{
string ID =thismodelpart.Identifier.ID.ToString();
string Name = thismodelpart.Name;
List<string> list;
if (dict.TryGetValue(Name, out list))
list.Add(ID);
else
dict[Name] = new List<string>() { ID };
}
}