Добавление элемента в список, если таковой отсутствует - 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); } } } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д