Поиск по определенному или двум и более параметрам в 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));

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4 из 5
Похожие ответы