Advertisement
SimeonSheytanov

Files

Sep 13th, 2016
466
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.71 KB | None | 0 0
  1. namespace Files
  2. {
  3.     using System;
  4.     using System.Collections.Generic;
  5.     using System.Linq;
  6.     using System.IO;
  7.  
  8.     public class Files
  9.     {
  10.         public static void Main(string[] args)
  11.         {
  12.             int fileCount = int.Parse(Console.ReadLine());
  13.  
  14.             List<string> files = ReadFiles(fileCount);
  15.  
  16.             string[] queryParams = Console.ReadLine().Split();
  17.  
  18.             PrintResult(ExecuteQuery(files, queryParams[0], queryParams[2]));
  19.         }
  20.  
  21.         private static void PrintResult(Dictionary<string, int> filteredFiles)
  22.         {
  23.             if (filteredFiles.Count == 0)
  24.             {
  25.                 Console.WriteLine("No");
  26.                 return;
  27.             }
  28.  
  29.             foreach (KeyValuePair<string, int> file in filteredFiles)
  30.             {
  31.                 Console.WriteLine($"{file.Key} - {file.Value} KB");
  32.             }
  33.         }
  34.  
  35.         private static Dictionary<string,int> ExecuteQuery(List<string> files, string extension, string rootFolder)
  36.         {
  37.             Dictionary<string, int> filteredFiles = files
  38.                         .Where(file => file.Split(new [] {'\\'}, StringSplitOptions.RemoveEmptyEntries)[0] == rootFolder)
  39.                         .Where(file =>
  40.                         {
  41.                             string ext = Path.GetExtension(file
  42.                                 .Split(new[] {'\\'}, StringSplitOptions.RemoveEmptyEntries)
  43.                                 .Last()
  44.                                 .Split(';')[0]);
  45.                            
  46.                             return !string.IsNullOrEmpty(ext) && ext.Substring(1) == extension;
  47.                         })
  48.                         .ToLookup(file => file
  49.                             .Split(new[] { '\\' }, StringSplitOptions.RemoveEmptyEntries)
  50.                             .Last()
  51.                             .Split(';')[0],
  52.                             file => int.Parse(file
  53.                             .Split(new[] { '\\' }, StringSplitOptions.RemoveEmptyEntries)
  54.                             .Last()
  55.                             .Split(';')[1]))
  56.                         .ToDictionary(pair => pair.Key, pair => pair.Last())
  57.                         .OrderByDescending(file => file.Value)
  58.                         .ThenBy(file => file.Key)
  59.                         .ToDictionary(pair => pair.Key, pair => pair.Value);
  60.            
  61.             return filteredFiles;
  62.         }
  63.  
  64.         private static List<string> ReadFiles(int fileCount)
  65.         {
  66.             List<string> files = new List<string>();
  67.  
  68.             for (int i = 0; i < fileCount; i++)
  69.             {
  70.                 files.Add(Console.ReadLine());
  71.             }
  72.  
  73.             return files;
  74.         }
  75.     }
  76. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement