List с элементом-классом, и работа с ним - C#
Формулировка задачи:
Стоит задача создать список, элементы которого представлены в виде классов.
1. Не получается сделать по нему поиск, ругается "An unhandled exception of type 'System.InvalidOperationException' occurred in mscorlib.dll (Additional information: Коллекция была изменена; невозможно выполнить операцию перечисления.)"
2. Как на последнем элементе в "forech" определить, что это последний элемент в списке?
Сразу буду приводить код, чтобы было понятней:
Прошу помощи!
class Program
{
public class Message //создаём класс
{
public int ID { get; set; }
public int count { get; set; }
public int Num_data { get; set; }
public System.DateTime tg_time { get; set; }
}
List<Message> arrList = new List<Message>(); //создаём лист с элементами класса
var mess12 = new Message(); //объявляем переменную класс и наполняем её тестовыми значениями
mess12.count =0;
mess12.ID= 22;
mess12.Num_data=28;
for (int i=0; i < 10;i++ ) //цикл по заполнению списка значениями
{
mess12.count = 0+i;
mess12.ID = 22+i;
mess12.Num_data = 28+i;
mess12.tg_time = DateTime.Now;
arrList.Add(mess12);
}
//работа со списком - ищем вхождение, если нет такого элемента то добавляем в список
foreach (var el in arrList) //вот здесь он мне пишет что An unhandled exception of type 'System.InvalidOperationException' occurred in mscorlib.dll (Additional information: Коллекция была изменена; невозможно выполнить операцию перечисления.)
{
if (el.ID == 33)
{
Console.WriteLine("Вхождение");
}
else
{
if (//вот здесь нужно как-то проверить, что элемент на котором мы сейчас находимся равен arrList.Count) и тогда дописать новый элемент
mess12.count = 1;
mess12.ID = 33;
mess12.Num_data = 28;
mess12.tg_time = DateTime.Now;
arrList.Add(mess12);
}
}
foreach (var el in arrList)
{
Console.WriteLine(el.ID + " " + el.count + " " + el.Num_data + " " + el.tg_time);
}Решение задачи: «List с элементом-классом, и работа с ним»
textual
Листинг программы
if (arrList.Where(x => x.ID == 33).Count() == 0)
{
//если нет элемента с ID равным 33, то добавляем
}