Мое текущее домашнее задание на C # требует использования предопределенного массива из 7 записей о сотрудниках, каждый из которых состоит из набора атрибутов. Эти записи должны использовать цикл foreach для извлечения всех записей сотрудников из массива, а затем использовать открытое переопределение ToString для отображения записей с определенным столбцовым форматированием. Я смог реализовать этот этап без проблем.
Тогда следующий набор требований требует, чтобы мы отображали только записи сотрудников, которые проработали менее одного года или от 1 до 5 лет, и вот где я застрял.
Мы должны использовать этот класс для представления текущей даты (скопировано и вставлено из задания):
public static class GlobalVars
{
public static DateTime reportDate = DateTime.Parse("02/28/2017");
}
Нам также необходимо создать оригинальный метод под названием YearsOfService, чтобы вычислить, сколько лет службы имеет сотрудник, сравнивая Год найма сотрудникаДата с Годом текущей даты в классе GlobalVars, который я сделано здесь:
public int YearsOfService()
{
DateTime current = GlobalVars.reportDate;
int yearsOfService = current.Year - hireDate.Year;
return yearsOfService;
}
И мы должны использовать этот синтаксис для печати записей на экране (скопированных и вставленных из задания):
Employee emp = new Employee();
Employee[] employees = Employee.GetEmployeeData();
Console.WriteLine(Employee.EmployeeReportTitle("Employee Report Data Dump"));
Console.WriteLine(Employee.ColumnHeader());
foreach (Employee employee in employees)
{
Console.WriteLine(employee.ToString());
}
А вот мой форматированный вывод строки переопределения для форматирования столбца:
public override string ToString()
{
return String.Format("{0,-10:D5} {1, -20}{2, -16}${3, -11}{4:MM/dd/yyyy} {5, 16:D2}",
empNumber, empName, empStatus, hourlyWage, hireDate, YearsOfService());
}
Это прекрасно работает для печати каждой записи в массиве, но как я могу вставить требования на уровне foreach? Мне нужно реализовать фильтр, чтобы единственными записями, которые печатаются через ToString, были записи, в которых yearsOfService выше определенного значения или между двумя значениями.
Я пробовал if / else зацикливать и переключать регистры, но я не могу структурировать синтаксис так, чтобы правильные записи были исключены / включены.