.NET 4.x Не выводит найденные элементы в List - C#
Формулировка задачи:
Console.WriteLine(clientList.FindAll(x => x.IsClientByDate(new DateTime(2017, 11, 21))));
namespace AbstractClient
{
public abstract class Client
{
public abstract void PrintInfo(); //Метод который выводит сведения о эл. класса
public DateTime Date { get; set; }
public bool IsClientByDate(DateTime date)
{
if (Date == date)
return true;
return false;
}
}
public class Investor : Client //Класс инвестор
{
public string Surname { get; set; }
public decimal DepositAmount { get; set; }
public double DepositInterest { get; set; }
public Investor(string surname, DateTime depositDate, decimal depositAmount, double depositInteres)
{
Surname = surname;
Date = depositDate;
DepositAmount = depositAmount;
DepositInterest = depositInteres;
}
public override void PrintInfo()
{
Console.WriteLine("Фамилия вкладчика: {0}", Surname);
Console.WriteLine("Дата открытия вклада: {0}", Date.ToShortDateString());
Console.WriteLine("Размер вклада: {0}", DepositAmount);
Console.WriteLine("Процент по вкладу: {0}", DepositInterest);
}
}
public class Creditor : Client //Класс кредитор
{
public string Surname { get; set; }
public decimal CreditAmount { get; set; }
public double CreditInterest { get; set; }
public double CreditBalance { get; set; }
public Creditor(string surname, DateTime creditDate, decimal creditAmount, double creditInterest,
double creditBalance)
{
Surname = surname;
Date = creditDate;
CreditAmount = creditAmount;
CreditInterest = creditInterest;
CreditBalance = creditBalance;
}
public override void PrintInfo()
{
Console.WriteLine("Фамилия кредитора: {0}", Surname);
Console.WriteLine("Дата выдачи кредита: {0}", Date.ToShortDateString());
Console.WriteLine("Размер кредита: {0}", CreditAmount);
Console.WriteLine("Процент по кредиту: {0}", CreditInterest);
Console.WriteLine("Остаток долга: {0}", CreditBalance);
}
}
public class Organization : Client //Класс организация
{
public string Name { get; set; }
public int AccountNumber { get; set; }
public decimal AccountAmount { get; set; }
public Organization(string name, DateTime accountDate, int accountNumber, decimal accountAmount)
{
Name = name;
Date = accountDate;
AccountNumber = accountNumber;
AccountAmount = accountAmount;
}
public override void PrintInfo()
{
Console.WriteLine("Название организации: {0}", Name);
Console.WriteLine("Дата открытия счета: {0}", Date.ToShortDateString());
Console.WriteLine("Номер счета: {0}", AccountNumber);
Console.WriteLine("Сумма на счету: {0}", AccountAmount);
}
}
class Program
{
static void Main(string[] args)
{
List<Client> clientList = new List<Client>() //Объявление списка и добавление в него 3х элементов
{ new Investor ("alex", new DateTime (2017,11,21),21,12),
new Creditor ("dan", new DateTime (2017,11,21),21,12,43),
new Organization ("corp", new DateTime (2017,11,21),21,12)};
Link:
Console.WriteLine("1. Отобразить список.");
Console.WriteLine("2. Добавить.");
Console.WriteLine("3. Удалить.");
Console.WriteLine("4. Найти по дате.");
try
{
string s = Console.ReadLine();
if (s == "1") //Отображение списка
{
Console.Clear();
foreach (Client client in clientList)
{
client.PrintInfo();
Console.WriteLine();
}
}
else if (s == "2") //Добавление нового элемента в список
{
Console.Clear();
Console.WriteLine("1. Добавить инвестора.");
Console.WriteLine("2. Добавить кредитора.");
Console.WriteLine("3. Добавить организацию.");
string s2 = Console.ReadLine();
Console.Clear();
if (s2 == "1")
{
Console.WriteLine("Введите имя, размер вклада, процент по вкладу. После ввода каждого пораметра нажмите 'enter'");
clientList.Add(new Investor(Console.ReadLine(), DateTime.Now, Convert.ToDecimal(Console.ReadLine()), Convert.ToDouble(Console.ReadLine())));
}
else if (s2 == "2")
{
Console.WriteLine("Введите имя, размер кредита, процент по кредиту, остаток долга. После ввода каждого пораметра нажмите 'enter'");
clientList.Add(new Creditor(Console.ReadLine(), DateTime.Now, Convert.ToDecimal(Console.ReadLine()), Convert.ToDouble(Console.ReadLine()), Convert.ToDouble(Console.ReadLine())));
}
else if (s2 == "3")
{
Console.WriteLine("Введите название организации, номер счета, сумма на счету. После ввода каждого пораметра нажмите 'enter'");
clientList.Add(new Organization(Console.ReadLine(), DateTime.Now, Convert.ToInt16(Console.ReadLine()), Convert.ToDecimal(Console.ReadLine())));
}
}
else if (s == "3") //Удаление элемента из списка
{
foreach (Client client in clientList)
{
client.PrintInfo();
Console.WriteLine();
}
Console.WriteLine("Введите номер записи которую необходимо удалить:");
clientList.RemoveAt(Convert.ToInt16(Console.ReadLine()) - 1);
Console.Clear();
foreach (Client client in clientList)
{
client.PrintInfo();
Console.WriteLine();
}
}
else if (s == "4") //Поиск по дате
Console.WriteLine(clientList.FindAll(x => x.IsClientByDate(new DateTime(2017, 11, 21))));
}
catch (FormatException)
{ Console.WriteLine("Несоответствие формата"); }
Console.ReadLine();
Console.Clear();
goto Link;
}
}
}Решение задачи: «.NET 4.x Не выводит найденные элементы в List»
textual
Листинг программы
var found = clientList.FindAll(x => x.IsClientByDate(new DateTime(2017, 11, 21)));
foreach (var c in found)
{
c.PrintInfo();
}