Перебор своей коллекции - 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()