Проблема со списком внутри Dictionary в C#

У меня есть следующее:

dic = new Dictionary<string, List<int>>;

Но когда я делаю dic.Add стоимости из-за параметра, который он ждет, один string и один List<int>, но для одной самой key (string) я хочу добавить другой int в список: как я могу делать это?

0
задан 27.01.2017, 06:23
0 ответов

Проблема проистекает, в который, захотев добавить стоимость типа int список действительно то, что ты делаешь, состоит в том, чтобы добавлять новый ввод под словарь, следовательно тебя помечает ошибка ключа, удвоенного в словаре, чтобы добавлять стоимость к списку, сначала ты должен находить ключ в словаре и потом, добавлять стоимость к списку. Используя Linq ты можешь добавлять стоимость к списку этой формы:

Dictionary<string, List<int>> dic = new Dictionary<string, List<int>>();

dic.Add("1", new List<int> { 1, 2, 3 });
dic.Add("2", new List<int> { 4, 5, 6 });
dic.Add("3", new List<int> { 7, 8, 9 });

dic.FirstOrDefault(t => t.Key == "1").Value.Add(10);
dic.FirstOrDefault(t => t.Key == "1").Value.Add(11);
dic.FirstOrDefault(t => t.Key == "1").Value.Add(12);

foreach(var item in dic){
    Console.WriteLine("Llave string: " + item.Key);

    foreach (var valuesList in item.Value)
    {
        Console.WriteLine("Valores en lista: " + valuesList.ToString());
    }
}

Demo

1
ответ дан 03.12.2019, 17:28
  • 1
    Большое спасибо! Он подал меня для añ adir элементы в список, который находится внутри dictionary., но поскольку я могу делать, чтобы обнаруживать элемент списка пунктуального int, чтобы это удалять. agradecerí во многий, если он помогает!! –  27.01.2017, 20:48
  • 2
    Остается та же ló gica, что словарь для того, чтобы сначала ты искал INT , которые ты хочешь удалить, он реализует какие-то попытки, и если ты этого не добиваешься, он реализует новый вопрос, показывая твои продвижения и со вкусом мы помогаем тебе :D @Elpingui8 –  27.01.2017, 20:53
  • 3
    Спасибо Flxr! Я был должен создавать новый вопрос, так как я тестировал достаточно, и я не могу делать это. есть что-то, что я должен быть вредя –  27.01.2017, 21:23

Хорошо ты можешь использовать LINQ как Flxtr он выставил наверху, или создавать класс, который позволял бы тебе делать это простой формой:

class Program
{
    static void Main(string[] args)
    {
        Custom myCustom = new Custom(); //Instancias tu propio dic

        myCustom.Add("Hola", 10); //Agregas de a uno
        myCustom.Add("Hola", 30, 50, 10); //O agregas de a muchos

        var values = myCustom.Dic["Hola"]; //Casual, accediento a tus valores...
    }
}

public class Custom
{
    public Dictionary<string, List<int>> Dic { get; set; } = new Dictionary<string, List<int>>();

    public void Add(string str, params int[] pms)
    {
        if (Dic.Count > 0)
            if (!Dic.ContainsKey(str))
                Dic.Add(str, pms.ToList());
            else
            {
                var temp = Dic[str];

                Dic.Remove(str);
                Dic.Add(str, temp.Concat(pms).ToList());
            }
        else Dic.Add(str, pms.ToList());
    }
}
0
ответ дан 03.12.2019, 17:28

Теги

Похожие вопросы