Чтобы одна функция обрабатывала как нулевые, так и ненулевые телефонные номера, я бы реализовал функцию расширения.
static class EmployeesExtensions
{
public static ICollection<Employees> SearchForPhoneNumber(
this ICollection<Employees> collection,
Func<Employees, bool> predicate)
{
return collection.Where(predicate).ToList();
}
}
Здесь следует отметить несколько важных моментов.
Итак, теперь, когда у нас есть метод расширения, мы можем использовать его в программе.
class Program
{
static void Main(string[] args)
{
var employees = CreateEmployeesCollection();
Console.WriteLine("Employees with Phone Number");
foreach (var e in employees.SearchForPhoneNumber(
e => !string.IsNullOrEmpty(e.PhoneNumber)))
{
Console.WriteLine($"ID: {e.Id}; Name: {e.Name}; Phone: {e.PhoneNumber}");
}
Console.WriteLine();
Console.WriteLine("Employees with No Phone Number");
foreach (var e in employees.SearchForPhoneNumber(
e => string.IsNullOrEmpty(e.PhoneNumber)))
{
Console.WriteLine($"ID: {e.Id}; Name: {e.Name}; Phone: null");
}
Console.WriteLine();
Console.WriteLine("Employees with Phone Number in 312 Area Code");
foreach (var e in employees.SearchForPhoneNumber(
e => !string.IsNullOrEmpty(e.PhoneNumber)
&& e.PhoneNumber.StartsWith("312")))
{
Console.WriteLine($"ID: {e.Id}; Name: {e.Name}; Phone: {e.PhoneNumber}");
}
}
private static ICollection<Employees> CreateEmployeesCollection()
{
var employees = new Collection<Employees>();
employees.Add(new Employees { Id = 1, Name = "John Doe", PhoneNumber = null });
employees.Add(new Employees { Id = 2, Name = "Jane Doe", PhoneNumber = "212-555-1212" });
employees.Add(new Employees { Id = 3, Name = "Mike Smith", PhoneNumber = "312-555-1213" });
employees.Add(new Employees { Id = 4, Name = "Mary Smith", PhoneNumber = "312-555-1214" });
employees.Add(new Employees { Id = 5, Name = "Bob Jones", PhoneNumber = "214-555-1215" });
employees.Add(new Employees { Id = 5, Name = "Beth Jones", PhoneNumber = null });
return employees;
}
}
Да, также, для этот экзамен Я предположил следующее определение класса сотрудников:
// File: Employees.cs
class Employees
{
public int Id { get; set; }
public string Name { get; set; }
public string PhoneNumber { get; set; }
}