Перебор своей коллекции - C#
Формулировка задачи:
Приветствую, ребята, подскажите в чем ошибся, шарп недавно начал изучать. Сейчас обрисую задачу.
Есть текстовый файлик с данными с определенной структурой, требуется его распарсить и данные занести в коллекцию для последующей обработки.
Вот что сделал я:
код обработчика кнопки, по которому загружаю файлик:
а вот код созданного мною класса ReadDataFile
Вот у меня теперь ступор, как мне обойти коллекцию, которая хранится в list_comments с помощью foreach() ?
Понимаю что нужно как-то привести к перечислителю переменную, и потом уже из этой переменной тянуть поля autor и comment, но что-то ступор, пните в нужном направлении пожалуйста
Походу нужно как-то работать с индексаторами. Сейчас покурю
//открываем файл для чтения if (openFileDialog.ShowDialog() == DialogResult.Cancel) return; else { //начинаем обрабатывать файл //получаем выбранный файл string file_name = openFileDialog.FileName; //создаем объект для получения данных ReadDataFile parse_data = new ReadDataFile(file_name); //обрабатываем файл ListComment list_comments = new ListComment(); list_comments = parse_data.GetData(); }
class ReadDataFile { //переменная для хранения пути к файлу private string path_to_file = ""; //задаем путь до файла public ReadDataFile(string PathToFile) { path_to_file = PathToFile; } //метод открытия и чтения файла public ListComment GetData() { ListComment Comments = new ListComment(); //добавляем запись в список комментариев //Comments.AddRecord() //читаем текстовый файл using (StreamReader sr = new StreamReader(path_to_file)) { //переменная для хранения текстовой строки string line = ""; //содержит автора string tmp_autor = ""; //содержит текст коммента string tmp_text_comment = ""; //обходим файл построчно пока не закончится while ((line = sr.ReadLine()) != null) { //если строка содержит автора if (line.Contains("Автор:")) { line = line.Replace("Автор:", ""); tmp_autor = line; continue; } if (line.Contains("Коммент:")) { line = line.Replace("Коммент:", ""); tmp_text_comment = line; continue; } if (line.Contains("*******************")) { //заносим полученные данные в список Comments.AddRecord(tmp_autor, tmp_text_comment); //очищаем значения полей tmp_autor = ""; tmp_text_comment = ""; } } } return Comments; } } //класс предназначен для хранения списка комментариев class ListComment { List<Comment> data_list_comment; //задаем список комментариев public ListComment() { data_list_comment = new List<Comment>(); } //добавление записи в список комментариев public void AddRecord(string autor, string text_comment) { Comment tmp_comment = new Comment(); tmp_comment.autor = autor; tmp_comment.comment = text_comment; data_list_comment.Add(tmp_comment); } } //класс комментария, содержит автора и текст комментария class Comment { //поля //автор комментария private string autor_comment; //комментарий private string text_comment; //свойства public string autor { get { return autor_comment; } set { autor_comment = value; } } public string comment { get { return text_comment; } set { text_comment = value; } } }
Решение задачи: «Перебор своей коллекции»
textual
Листинг программы
public IEnumerable<Comment> GetData()
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д