Определить, есть ли в списке работающих Ивановы, и, если есть, то вывести их адрес (адреса) - C#
Формулировка задачи:
Вот сама задача: Дан массив данных о работающих на фабрике: фамилия, имя, отчество, адрес (улица, дом, квартира) и дата поступления на работу (месяц, год). Определить, есть ли в списке Ивановы (Иванов, Иванова), если есть, то вывести их адрес (адреса) и посчитать из них количество, проработавших не менее двух лет на сегодняшний день.
Проблема в том, что я не знаю как сделать так, чтобы код проверял только Ивановых!
структура с фамилией
Вот фрагмент кода, который проверяет, работает ли человек более 2 лет, как написать, чтобы он проверял Иванов или нет?
public string familia;
for (int i = 0; i < n; i++)
{
if (((c - mas[i].date.year) * 12 + mas[i].date.month) >= 24)
k++;
}Решение задачи: «Определить, есть ли в списке работающих Ивановы, и, если есть, то вывести их адрес (адреса)»
textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
public struct FullName
{
public string surname;
public string name;
public string patr;
public override string ToString()
{
return String.Format("{0} {1} {2}", surname, name, patr);
}
}
public struct Address
{
public string street;
public uint home;
public uint ap;
public override string ToString()
{
return String.Format("{0} {1} {2}", street, home, ap);
}
}
public struct Date
{
public uint month;
public uint year;
public override string ToString()
{
return String.Format("{0} {1}", month, year);
}
}
public struct Employee
{
public FullName fullname;
public Address address;
public Date date;
public override string ToString()
{
return String.Format("ФИО: {0}, Адрес: {1}, Дата: {2}", fullname, address, date);
}
}
public class Program
{
public static void Main()
{
List<Employee> list = new List<Employee>
{
new Employee{fullname = new FullName{surname = "Иванов", name = "Иван", patr = "Иванович"},
address = new Address{street = "Железнодорожников", home = 22, ap = 121},
date = new Date{month = 12, year = 2016}},
new Employee{fullname = new FullName{surname = "Иванов", name = "Семен", patr = "Вениаминович"},
address = new Address{street = "Гоголя", home = 60, ap = 92},
date = new Date{month = 4, year = 2008}},
new Employee{fullname = new FullName{surname = "Петров", name = "Петр", patr = "Петрович"},
address = new Address{street = "Тимирязева", home = 12, ap = 41},
date = new Date{month = 8, year = 2012}},
new Employee{fullname = new FullName{surname = "Иванова", name = "Ольга", patr = "Михайловна"},
address = new Address{street = "Пушкинская", home = 4, ap = 190},
date = new Date{month = 2, year = 2015}}
};
var data = from d in list where d.fullname.surname == "Иванов" || d.fullname.surname == "Иванова" select d;
uint count = 0;
foreach(var d in data)
{
Console.WriteLine(d);
if (DateTime.Now.Year - d.date.year > 2||
(DateTime.Now.Year - d.date.year == 2 && DateTime.Now.Month >= d.date.month))
++count;
}
Console.WriteLine("Из них проработали не менее двух лет: {0}", count);
Console.ReadLine();
}
}