Поиск по определенному или двум и более параметрам в 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));
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д