Класс People и два класса-наследника Working и Client: Поиск по части слова - C#
Формулировка задачи:
Здравствуйте.
Имеется базовый класс People и два класса-наследника Working и Client. Далее создал два list с этими объектами Working и Client.
Задача такая-нужно сделать поиск по части отчеству или имени или фамилии, то есть например ввожу кусочек отчества "Васил" и появлялась вся информация о найденном человеке "Заведующий складом Макаров Максим Васильевич".
Я сделал поисковик, но он ищет только по целому введенному слову. Вот мой код.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication5
{
class Program
{
static void Main(string[] args)
{
List<People> list = new List<People>
{
new Working { Id = 1, Post = "Директор", Familiya = "Леонтьев", Imya = "Дмитрий", Otchestvo = "Викторович" },
new Working { Id = 2, Post = "Менеджер", Familiya = "Зайцева", Imya = "Людмила", Otchestvo = "Владимировна" },
new Working { Id = 3, Post = "Заведующий складом", Familiya = "Макаров", Imya = "Максим", Otchestvo = "Васильевич" },
new Working { Id = 4, Post = "Продавец-Консультант", Familiya = "Бутко", Imya = "Евгений", Otchestvo = "Дмитриевич" },
new Working { Id = 5, Post = "Кассир", Familiya = "Мракарян", Imya = "Светлана", Otchestvo = "Дмитриевна" },
};
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("Рабочие:");
Console.ResetColor();
list.ForEach(x =>
{
Console.WriteLine("№ " + x.Id + " " + x.Post + " " + x.Familiya + " " + x.Imya + " " + x.Otchestvo + " " + x.Checkout + " \n");
});
//foreach (People i in list)
//{
// Console.WriteLine(i.Id);
//}
List<People> list2 = new List<People>
{
new Client { Id = 23, Post = "Покупатель", Familiya = "Шульженко", Imya = "Олег", Otchestvo = "Николаевич", Checkout = "Диск(кол-во 1)" },
new Client { Id = 24, Post = "Покупатель", Familiya = "Волков", Imya = "Дмитрий", Otchestvo = "Олегович", Checkout = "Диск(кол-во 1)" },
new Client { Id = 25, Post = "Покупатель", Familiya = "Шульженко", Imya = "Лилия", Otchestvo = "Васильевна", Checkout = "Тетрадь(кол-во 3)" },
new Client { Id = 26, Post = "Покупатель", Familiya = "Полещук", Imya = "Олег", Otchestvo = "Васильевич", Checkout = "Книга(кол-во 1)" },
new Client { Id = 27, Post = "Покупатель", Familiya = "Хазарова", Imya = "Инна", Otchestvo = "Николаевна", Checkout = "ручка(кол-во 1)" }
};
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("\nПокупатели:");
Console.ResetColor();
list2.ForEach(x =>
{
Console.WriteLine("№ " + x.Id + " " + x.Post + " " + x.Familiya + " " + x.Imya + " " + x.Otchestvo + " " + x.Checkout + " \n");
});
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("\nПоиск по Ф/И/О:");
Console.ResetColor();
string str = Console.ReadLine();
var result = list2.Where(s => s.Imya == str || s.Familiya == str || s.Otchestvo == str);
foreach (var item in result)
{
Console.WriteLine(item.ToString());
}
Console.Read();
}
public class People
{
public int Id { get; set; }
public string Post { get; set; }
public string Familiya { get; set; }
public string Imya { get; set; }
public string Otchestvo { get; set; }
public string Checkout { get; set; }
public int Price { get; set; }
public override string ToString()
{
return Familiya;
}
}
public class Working : People
{
}
public class Client : People
{
}
}
}Решение задачи: «Класс People и два класса-наследника Working и Client: Поиск по части слова»
textual
Листинг программы
var result = list2.Select(x => String.Join(" ", x.Imya, x.Familiya, x.Otchestvo)).Where(y => y.Contains(str));
foreach (var item in result)
Console.WriteLine(item);