Добавление элемента в список, если таковой отсутствует - C#

Узнай цену своей работы

Формулировка задачи:

У меня есть текстовый файл. В нём присутствуют названия компаний. Мне нужно создать список компаний, находить их по ключевому слову в тексте, затем сравнивать с уже имеющимся списком и, если она уже есть выводить её индекс в списке, если же нет - добавлять в список. Никак не пойму как строить логику.
public void Create_companies_list (ref int i)
        {
            for (i += 0; i < all_lines_articles.Count; i++)
            {
                line = all_lines_articles[i];
                if (line.Contains(DAL.Keywords.KEY_LIST_COMPANIES))
                {
                    for (i += 2; i < all_lines_articles.Count; i++)
                    {
                        line = all_lines_articles[i];
                        bool line_is_not_empty = line.Length > 2;
                        if (line_is_not_empty)
                        {
                            string company_name = line;
                            for (int company_index = 0; company_index < companies_list.Count; company_index++)
                            {
                                string company_current_name = companies_list[company_index].Company_name;
                                if (company_name == company_current_name)
                                {
                                    break;//вот здесь нужно выйти из двух циклов сразу.
                                }
                            }
                            this.companies_list.Add(new Company(company_name));
                        }
                        else
                        {
                            //return;
                            this.Create_companies_list(ref i);
                        }
                    }
                }
            }
        }
Как сделать так, чтобы при совпадении программа выходила сразу из двух циклов. Потому что, если она прервёт внутренний цикл сравнения, то это ничего не меняет, она по завершению всё равно добавит в список компанию не смотря на то, что такая в списке есть. А надо, чтобы наружный цикл запустился заново и взял следующее имя компании.

Решение задачи: «Добавление элемента в список, если таковой отсутствует»

textual
Листинг программы
public void Create_companies_list(ref int i)
        {
            bool flag = false;
            for (i += 0; i < all_lines_articles.Count; i++)
            {
                line = all_lines_articles[i];
                if (line.Contains(DAL.Keywords.KEY_LIST_COMPANIES))
                {
                    for (i += 2; i < all_lines_articles.Count; i++)
                    {
                        line = all_lines_articles[i];
                        bool line_is_not_empty = line.Length > 2;
                        if (line_is_not_empty)
                        {
                            string company_name = line;
                            for (int company_index = 0; company_index < companies_list.Count; company_index++)
                            {
                                string company_current_name = companies_list[company_index].Company_name;
                                if (company_name == company_current_name)
                                {
                                    flag = true;//
                                    break;//вот здесь нужно выйти из двух циклов сразу.
                                }
                            }
                            if (flag) {flag = false; break;}//
                            this.companies_list.Add(new Company(company_name));
                        }
                        else
                        {
                            //return;
                            this.Create_companies_list(ref i);
                        }
                    }
                }
            }
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.778 из 5
Похожие ответы