Помогите пожалуйста,я только учусь программированию.Как исправить данные ошибки?

using System;
using System.Collections.Generic;

namespace labWork_29_17
{
    public class Program
    {
        public static void Main(string[] args)
        {
            List<string> currency = new List<string> ();  // Создание списка currency

            currency.Add("Euro"); // Добавление в список currency Euro
            currency.Add("Dollar");   // Добавление в список currency Dollar
            currency.Add("Rouble");   // Добавление в список currency Rouble

            int count;  // Перемнная для записи количества новых элементов
            Console.Write("Введите количество новых элементов для списка: ");
            count = Convert.ToInt32(Console.ReadLine());
            for (int i = 0; i < count; i++)
            {
                Console.Write("Введите новую валюту: ");
                currency.Add(Console.ReadLine()); // Добавление в список нового элемента
            }

            Console.WriteLine("\nСписок всех валют: ");
            foreach (var item in currency)
            {
                Console.WriteLine("({0}) - {1}", currency.IndexOf(item) + 1, item);   // Вывод всех элементов списка currency
            }

            int position1, position2; // Переменные для записи позиций
            do
            {
                Console.WriteLine("\nУкажите две позиции, значения между которыми будут выведены: ");
                position1 = Convert.ToInt32(Console.ReadLine());
                position2 = Convert.ToInt32(Console.ReadLine());
            } while (position1 < 0 || position1 > currency.Count || position2 < 0 || position2 > currency.Count);   // Проверка на соблюдение границ списка

            Console.WriteLine("\nИзменённый список");
            for (int i = position1 - 1; i < position2; i++)
            {
                Console.WriteLine("({0}) - {1}", currency.IndexOf(currency[i]) + 1, currency[i]); // Вывод изменённого списка
            }
            Dictionary<string, int> theusers = new Dictionary<string, int> (); // Создание словаря с именем theusers

            theusers.Add("asus", 7);   // Добавление в словарь элементa ключ asus,значение 7
            theusers.Add("dell", 1); // Добавление в словарь элементa ключ dell,значение 1
            theusers.Add("hp", 9);  // Добавление в словарь элементa ключ hp,значение 9

            Console.Write("\nВведите количество новых элементов для словаря: ");
            count = Convert.ToInt32(Console.ReadLine());
            for (int i = 0; i < count; i++)
            {
                Console.WriteLine("Введите данные для нового пользователя (логин и возраст): ");

                string login = Console.ReadLine();  // Ввод ключа
                int age = Convert.ToInt32(Console.ReadLine());  // Ввод значения

                theusers.Add(login, age);  // Создание элемента с введённым ключом и значением
            }

            Console.WriteLine("Введите значение") ;
            string  remove = Console.ReadLine();
            for (int i = 0; i<theusers.Count;i++)
            {
            if (remove == theusers [i])
            {
            theusers[i].Remove();
            }
            }      
        }
    }
}
Compilation error (line 66, col 27): The best overloaded method match for 'System.Collections.Generic.Dictionary<string,int>.this[string]' has some invalid arguments
Compilation error (line 66, col 37): Argument 1: cannot convert from 'int' to 'string'
Compilation error (line 68, col 13): The best overloaded method match for 'System.Collections.Generic.Dictionary<string,int>.this[string]' has some invalid arguments
Compilation error (line 68, col 22): Argument 1: cannot convert from 'int' to 'string'

Ответы (1 шт):

Автор решения: aepot

Если я правильно понял, то на последнем этапе нужно ввести число, и удалить из словаря элемент, значение которого равно этому числу.

В этом случае, исправленный фрагмент кода будет выглядеть вот так

Console.WriteLine("Введите значение");
int remove = Convert.ToInt32(Console.ReadLine());
foreach (KeyValuePair<string, int> pair in theusers)
{
    if (remove == pair.Value)
    {
        theusers.Remove(pair.Key);
        break;
    }
}

Только имейте в виду, что данный код удалит только одну первую попавшуюся запись. Если надо удалить все попадающие под условие, код будет немного другой.

Например, можно вот так:

Console.WriteLine("Введите значение");
int remove = Convert.ToInt32(Console.ReadLine());
List<string> removeusers = new List<string>();
foreach (KeyValuePair<string, int> pair in theusers)
{
    if (remove == pair.Value)
    {
        removeusers.Add(pair.key);
    }
}
foreach (string login in removeusers)
{
    theusers.remove(login);
}
→ Ссылка