Поиск по листу по всем параметрам - C#
Формулировка задачи:
допустим по параметру сравнить
А если мне надо по всем полям класса сравнить?? как то не хочется писать в лямбда выражении большую долгую строчку которая б 9 параметров бы сравневала.
почему кстати нельзя использовать расширенную версию лямбда выражения
я бы туда поместил что то типа этого
Ввобщем задание такое, поиск по ключевому слову в листе обьектов. Тоесть мне по всем параметрам каждого обьекта надо пробежатся и сравнить. Что то типа того что самый первый пример в теме. Но для всех параметров. Параметры там типа стринг и инт.
clients.FindAll(x => x.Surname == (string)obj);
realtys.FindAll(x => { });PropertyInfo[] properties = this.GetType().GetProperties();
foreach (PropertyInfo propertyInfo in properties)
{
string stringValue = propertyInfo.GetValue().ToString();
// ...
}Решение задачи: «Поиск по листу по всем параметрам»
textual
Листинг программы
class Client
{
public String Name { get; set; }
public int Age { get; set; }
public Client(string name, int age)
{
Name = name;
Age = age;
}
public string Description()
{
var sb = new StringBuilder();
PropertyInfo[] properties = this.GetType().GetProperties();
foreach (PropertyInfo propertyInfo in properties)
{
sb.Append(propertyInfo.GetValue(this));
sb.Append(" ");
}
return sb.ToString();
}
}
public static void Main(string[] args)
{
List<Client> clients = new List<Client>();
clients.Add(new Client("Vasya", 36));
clients.Add(new Client("Misha", 12));
clients.Add(new Client("Oleg", 32));
clients = clients.Where(c => c.Description().IndexOf("12") != -1).ToList();
foreach (var client in clients)
{
Console.WriteLine(client);
}
}