elena1234

ThePartyReservationFilterModule-how to use Func<>

Jan 28th, 2021 (edited)
242
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.07 KB | None | 0 0
  1. using System;
  2. using System.Linq;
  3. using System.Collections.Generic;
  4.  
  5. namespace ThePartyReservationFilterModule
  6. {
  7.     class Program
  8.     {
  9.         static void Main(string[] args)
  10.         {
  11.             var initialList = Console.ReadLine().Split().ToList();
  12.  
  13.             Func<List<string>, string, string, List<string>> funcRemoveFilter = (initialList, filterType, filterParameter) =>
  14.             {
  15.                 var listOnlyWithRemovedFilter = new List<string>();
  16.                 if (filterType == "Starts with")
  17.                 {
  18.                     foreach (var person in initialList)
  19.                     {
  20.                         if (person.StartsWith(filterParameter)) listOnlyWithRemovedFilter.Add(person);
  21.                     }
  22.                 }
  23.  
  24.                 else if (filterType == "Ends with")
  25.                 {
  26.                     foreach (var person in initialList)
  27.                     {
  28.                         if (person.EndsWith(filterParameter)) listOnlyWithRemovedFilter.Add(person);
  29.                     }
  30.                 }
  31.  
  32.                 else if (filterType == "Length")
  33.                 {
  34.                     int length = int.Parse(filterParameter);
  35.                     foreach (var person in initialList)
  36.                     {
  37.                         if (person.Length == length) listOnlyWithRemovedFilter.Add(person);
  38.                     }
  39.                 }
  40.  
  41.                 else if (filterType == "Contains")
  42.                 {
  43.                     foreach (var person in initialList)
  44.                     {
  45.                         if (person.Contains(filterParameter)) listOnlyWithRemovedFilter.Add(person);
  46.                     }
  47.                 }
  48.  
  49.                 return listOnlyWithRemovedFilter;
  50.             };
  51.  
  52.             Func<List<string>, string, string, List<string>> funcAddFilter = (guests, filterType, filterParameter) =>
  53.             {
  54.                 var listWithFilter = new List<string>();
  55.                 if (filterType == "Starts with")
  56.                 {
  57.                     foreach (var person in guests)
  58.                     {
  59.                         if (!person.StartsWith(filterParameter)) listWithFilter.Add(person);
  60.                     }
  61.                 }
  62.  
  63.                 else if (filterType == "Ends with")
  64.                 {
  65.                     foreach (var person in guests)
  66.                     {
  67.                         if (!person.EndsWith(filterParameter)) listWithFilter.Add(person);
  68.                     }
  69.                 }
  70.  
  71.                 else if (filterType == "Length")
  72.                 {
  73.                     int length = int.Parse(filterParameter);
  74.                     foreach (var person in guests)
  75.                     {
  76.                         if (person.Length != length) listWithFilter.Add(person);
  77.                     }
  78.                 }
  79.  
  80.                 else if (filterType == "Contains")
  81.                 {
  82.                     foreach (var person in guests)
  83.                     {
  84.                         if (!person.Contains(filterParameter)) listWithFilter.Add(person);
  85.                     }
  86.                 }
  87.  
  88.                 return listWithFilter;
  89.             };
  90.  
  91.             string input;
  92.             var guests = new List<string>();
  93.             guests.AddRange(initialList);
  94.             while ((input = Console.ReadLine()) != "Print")
  95.             {
  96.                 string[] inputArray = input.Split(';').ToArray();
  97.                 string command = inputArray[0];
  98.                 string filterType = inputArray[1];
  99.                 string filterParameter = inputArray[2];
  100.                 if (command.StartsWith("Add"))
  101.                 {
  102.                     guests = funcAddFilter(guests, filterType, filterParameter);
  103.                 }
  104.  
  105.                 else if (command.StartsWith("Remove"))
  106.                 {
  107.                     var listOnlyWithRemoveFilter = funcRemoveFilter(initialList, filterType, filterParameter);
  108.                     guests.AddRange(listOnlyWithRemoveFilter);
  109.                 }
  110.             }
  111.  
  112.             Console.WriteLine(string.Join(" ", guests));
  113.         }
  114.     }
  115. }
  116.  
Add Comment
Please, Sign In to add comment