lowest = ModuleData.studentMark.ToString()[index];
Эта строка почти наверняка неверна, поскольку вы возвращаете строковое представление вашей коллекции (вероятно, что-то вроде "System.String[]"
или "System.Collections.Generic.List'1[System.String]"
) и получаете символ из строки по индексу и косвенно преобразуете этот символ в целое число , Линия, вероятно, должна быть
lowest = int.Parse(ModuleData.studentMark[index]);
Однако вы можете заменить этот метод одним запросом LINQ, например:
public int MinMark() => ModuleDate.studentMark.Select(int.Parse).Min();
Это позволит проанализировать все оценки учащихся в целые числа, а затем выбрать наименьшее из коллекции. Если это все еще только возвращает первый индекс, то первый индекс, вероятно, является самым низким значением в вашем случае, или поле ModuleDate.studentMark
не заполняется, как вы ожидаете.