.NET 4.x Массивы и коллекции - метод для поиска - C#
Формулировка задачи:
Добрый день! Моя задача : ввод с клавиатуры данных в массив, состоящий из объектов типа Note; записи должны быть упорядочены по датам дней рождения;
- вывод на экран информации о человеке, номер телефона которого введен с клавиатуры; если такого нет, выдать соответствующее сообщение.
Проблема во втором пункте- добавить метод для поиска по условию, если не найден элемент- сгенерировать исключение. Класс основан на структуре типа ОЛС и я не совсем понимаю, как из готовой записи list (фамилия,имя,телефон,ДР) достать переменную Phone и сравнить с искомой NomPhone. Заранее благодарю за помощь.
Наработки:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Console2
{
public class Note : IComparable<Note>
{
public string FName { get; set; }
public string LName { get; set; }
public string Phone { get; set; }
public DateTime Birthday { get; set; }
public Note(string FName, string LName, string Phone, DateTime Birthday)
{
this.FName = FName;
this.LName = LName;
this.Phone = Phone;
this.Birthday = Birthday;
}
// Реализуем интерфейс IComparable<T>
public int CompareTo(Note obj)
{
return Birthday.CompareTo(obj.Birthday);
}
public override string ToString()
{
return FName + " " + LName + " " +Phone+" "+ Birthday.Date;
}
/*public int Note (Note obj, string NomPhone)
{
int tmp = String.Compare(NomPhone, obj.Phone);
if (tmp == 0 && String.Compare(NomPhone, obj.Phone) == 0)
return 0;
else
return tmp;
}*/
}
class Program
{
static void Main(string[] args)
{
string FName = "", LName = "", Phone = "", Birthday = "";
List<Note> list = new List<Note>();
Console.Write("Введите количество записей: ");
int N = Convert.ToInt32(Console.ReadLine());
//создаем множество записей
Note[] noteArr = new Note[N];
for (int i = 0; i < N; i++)
{
Console.WriteLine("\nВведите {0} запись:", i + 1);
Console.Write("фамилия: "); FName = Console.ReadLine();
Console.Write("имя: "); LName = Console.ReadLine();
Console.Write("телефон: 4 цифры"); Phone = Console.ReadLine();
Console.Write("Введите дату рождения (дд.мм.гггг): ");
Birthday = Console.ReadLine(); //Console.WriteLine(Birthday);
list.Add(new Note(FName, LName, Phone, DateTime.Parse(Birthday)));
}
//сортировка записей
list.Sort();
Console.WriteLine("Исходные данные записей: \n");
foreach (Note rec in list)
Console.WriteLine(rec);
Console.WriteLine("Введите номер телефона интересующего человека: 4 цифры");
string NomPhone = Console.ReadLine();
Console.ReadKey();
}
}
}Решение задачи: «.NET 4.x Массивы и коллекции - метод для поиска»
textual
Листинг программы
string NomPhone = Console.ReadLine();
Note noteByPhone=list.FirstOrDefault(x=>x.Phone==NomPhone);
if(noteByPhone!=null)
{
}
else
{
Console.WriteLine("not found");
}