Поиск по определенному или двум и более параметрам в List.Find - C#
Формулировка задачи:
Есть структура
организована с списке в классе-менеджера работы с записной книжкой
интересует момент как компактнее организовать поиск по разным полям структуры, внеся возможность поиска по нескольким полям одновременно.
Листинг программы
- public struct Note
- {
- //из списка группы
- public string firstName; //имя
- public string lastName; //фамилия
- public ushort score; //успеваемость
- }
Листинг программы
- //класс - работа с блокнотом
- public class NoteManager
- {
- List<Note> note; //записную книжку оформляю через список, обеспечивая тем самым работы с произвольным числом записей
- //конструктор
- public NoteManager()
- {
- note = new List<Note>();
- note = FillNote.FillNote_(); //заполняю первоначальные поля в записную книжку
- }
- public void Find()
- {
- }
- //добавление записи в блокнот
- public void AddItem()
- {
- Note addNote = new Note();
- Console.Write("Введите имя: ");
- addNote.firstName = Console.ReadLine();
- Console.Write("Введите фамилию: ");
- addNote.lastName = Console.ReadLine();
- Console.Write("Введите балл: ");
- string stringE = Console.ReadLine();
- addNote.score = ushort.Parse(stringE);
- note.Add(addNote); //добаляю запись в список
- Sort(); //сортирую после добавления(по фамилии)
- }
- public void DelItem()
- {
- note.Find()
- }
- //сортировка записей в блокноте по фамилии
- public void Sort()
- {
- note.Sort((x, y) => x.lastName.CompareTo(y.lastName));
- }
- //вывод записей блокнота на экран
- public void ShowNote()
- {
- note.ForEach(x => Console.WriteLine("{0}\t{1}\t{2}", x.firstName, x.lastName, x.score)); //Вывод на экран списка записей
- }
- }
Может у кого есть время высказать свои мысли? Я предполагаю, что надо делать дженерик делегат. Но не совсем понимаю как по нескольким параметрам поиск производить
Решение задачи: «Поиск по определенному или двум и более параметрам в List.Find»
textual
Листинг программы
- var filtered = note;
- if (!string.IsNullOrEmpty(fname)) filtered = filtered.Where(x=>x.firstName == fname);
- if (!string.IsNullOrEmpty(lname)) filtered = filtered.Where(x=>x.lastName == lname);
- filtered = filtered.Where(x=>x.score == score);
- Console.WriteLine();
- filtered.ToList().ForEach(x => Console.WriteLine("{0}\t{1}\t{2}", x.firstName, x.lastName, x.score));
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д