Advertisement
Guest User

Untitled

a guest
Oct 20th, 2019
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.88 KB | None | 0 0
  1.  
  2.     public class DynamicSorter
  3.     {
  4.         public string Name, Rank;
  5.         public int Year;
  6.  
  7.         public DynamicSorter(string name, string rank, int year = 1988)
  8.         {
  9.             Name = name;
  10.             Rank = rank;
  11.             Year = year;
  12.         }
  13.  
  14.         public override string ToString()
  15.         {
  16.             return $"{Name}:{Rank}:{Year}";
  17.         }
  18.  
  19.         /// <summary>
  20.         /// This function satisfies: Make the sort dynamic per https://social.msdn.microsoft.com/Forums/vstudio/en-US/f66b4d1d-231a-4ed9-b009-bb89db450d4f/linq-with-dynamic-order-by-clause-c?forum=csharpgeneral and https://docs.microsoft.com/en-us/dotnet/api/system.linq.igrouping-2?view=netframework-4.8 and https://stackoverflow.com/questions/2728340/how-can-i-do-an-orderby-with-a-dynamic-string-parameter
  21.         /// </summary>
  22.         /// <param name="input"></param>
  23.         /// <param name="firstSort"></param>
  24.         /// <returns></returns>
  25.         public static List<DynamicSorter> SorterFunction(List<DynamicSorter> input, string firstSort)
  26.         {
  27.             //TODO: Implement "thenBy"
  28.             //TODO: Implement: var sortedItems = reverse ? items.OrderByDescending(orderByFunc) : items.OrderBy(orderByFunc)
  29.             Func<DynamicSorter, Object> orderByFunc_First = null;
  30.             switch (firstSort)
  31.             {
  32.                 case "Rank":
  33.                     orderByFunc_First = item => item.Rank;
  34.                     break;
  35.                 case "Name":
  36.                     orderByFunc_First = item => item.Name;
  37.                     break;
  38.                 case "Year":
  39.                     orderByFunc_First = item => item.Year;
  40.                     break;
  41.                 default:
  42.                     orderByFunc_First = item => null;
  43.                     return input;
  44.             }
  45.             return input.OrderBy(orderByFunc_First).ToList();
  46.         }
  47.  
  48.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement