Advertisement
Guest User

Untitled

a guest
Jul 25th, 2015
386
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 7.13 KB | None | 0 0
  1. namespace LinqExercise
  2. {
  3.     using System;
  4.     using System.Collections.Generic;
  5.     using System.IO;
  6.     using System.Linq;
  7.  
  8.     public class LinqExercise
  9.     {
  10.         public static void Main()
  11.         {
  12.             const string FilePath = @"../../Students-data.txt";
  13.            
  14.             List<string> result = new List<string>();
  15.  
  16.             StreamReader readData = new StreamReader(FilePath);
  17.             string headerLine = readData.ReadLine();
  18.  
  19.             string line;
  20.             while ((line = readData.ReadLine()) != null)
  21.             {
  22.                 result.Add(line);
  23.             }
  24.  
  25.             List<Student> students = new List<Student>();
  26.  
  27.             foreach (string data in result)
  28.             {
  29.                 string[] tokens = data.Split();
  30.  
  31.                 int id = int.Parse(tokens[0]);
  32.                 string firstName = tokens[1];
  33.                 string lastName = tokens[2];
  34.                 string email = tokens[3];
  35.                 string gender = tokens[4];
  36.                 string studentType = tokens[5];
  37.                 int examResult = int.Parse(tokens[6]);
  38.                 int homeworksSent = int.Parse(tokens[7]);
  39.                 int homeworksEvaluated = int.Parse(tokens[8]);
  40.                 double teamworkScore = double.Parse(tokens[9]);
  41.                 int attendancesCount = int.Parse(tokens[10]);
  42.                 double bonus = double.Parse(tokens[11]);
  43.  
  44.                 students.Add(new Student(
  45.                 id,
  46.                 firstName,
  47.                 lastName,
  48.                 email,
  49.                 gender,
  50.                 studentType,
  51.                 examResult,
  52.                 homeworksSent,
  53.                 homeworksEvaluated,
  54.                 teamworkScore,
  55.                 attendancesCount,
  56.                 bonus));
  57.             }
  58.  
  59.             // TODO write LINQ queries here
  60.            
  61.             //1
  62.             //var maleStudents = students
  63.             //    .Where(e => e.Gender == "Male");
  64.  
  65.             //foreach (var student in maleStudents)
  66.             //{
  67.             //    Console.WriteLine(student.FirstName + " " + student.LastName + " - " + student.Gender);
  68.             //}
  69.  
  70.             //2
  71.             //var studentsFirstNameA = students
  72.             //    .Where(e => e.FirstName.StartsWith("A"));
  73.  
  74.             //foreach (var student in studentsFirstNameA)
  75.             //{
  76.             //    Console.WriteLine(student.FirstName + " " + student.LastName);
  77.             //}
  78.  
  79.             //3
  80.             //var studentsOn = students
  81.             //    .Where(e => e.StudentType == "Online" && e.ExamResult >= 350);
  82.  
  83.             //foreach (var student in studentsOn)
  84.             //{
  85.             //    Console.WriteLine("{0} {1} ({2}) - {3}",
  86.             //        student.FirstName, student.LastName, student.StudentType, student.ExamResult);
  87.             //}
  88.  
  89.             //4
  90.             //var studentsOn = students
  91.             //    .Where(e => e.StudentType == "Online" && e.ExamResult >= 300)
  92.             //    .OrderByDescending(e => e.ExamResult);
  93.  
  94.             //foreach (var student in studentsOn)
  95.             //{
  96.             //    Console.WriteLine("{0} {1} ({2}) - {3}",
  97.             //        student.FirstName, student.LastName, student.StudentType, student.ExamResult);
  98.             //}
  99.  
  100.             //5
  101.             //var studentsHomework = students
  102.             //    .Where(e => e.HomeworksSent == 0)
  103.             //    .OrderBy(e => e.FirstName).ThenBy(e => e.LastName);
  104.  
  105.             //foreach (var student in studentsHomework)
  106.             //{
  107.             //    Console.WriteLine("{0} {1} ({2} homeworks sent)",
  108.             //        student.FirstName, student.LastName, student.HomeworksSent);
  109.             //}
  110.  
  111.             //6
  112.             //var studentsOnSite = students
  113.             //    .Where(e => e.StudentType == "Onsite")
  114.             //    .Select(e => e.Email);
  115.  
  116.             //foreach (var studentEmail in studentsOnSite)
  117.             //{
  118.             //    Console.WriteLine(studentEmail);
  119.             //}
  120.  
  121.             //7
  122.             //var studentsOnSite = students
  123.             //    .Where(e => e.AttendancesCount < 5)
  124.             //    .Select(e => new
  125.             //    {
  126.             //        e.ExamResult,
  127.             //        e.AttendancesCount
  128.             //    });
  129.  
  130.             //foreach (var student in studentsOnSite)
  131.             //{
  132.             //    Console.WriteLine("Result: {0}, attendances: {1}", student.ExamResult, student.AttendancesCount);
  133.             //}
  134.  
  135.             //8
  136.             //var studentsBonus = students
  137.             //    .Where(e => e.Bonus >= 4)
  138.             //    .Count();
  139.  
  140.             //Console.WriteLine(studentsBonus);
  141.  
  142.             //9
  143.             var avgExamStudents = students
  144.                 .Select(d => new
  145.                 {
  146.                     OnlineAverage = students.Where(s => s.StudentType == "Online").Select(s => s.ExamResult).Average(),
  147.                     OnsiteAverage = students.Where(s => s.StudentType == "Onsite").Select(s => s.ExamResult).Average()
  148.                 })
  149.                 .Distinct();
  150.  
  151.             foreach (var student in avgExamStudents)
  152.             {
  153.                 Console.WriteLine("Online average: " + student.OnlineAverage);
  154.                 Console.WriteLine("Onsite average: " + student.OnsiteAverage);
  155.             }
  156.  
  157.             //10
  158.             var studentsTWScore = students
  159.                 .Select(d => new
  160.                 {
  161.                     Max = students
  162.                     .Where(s => s.TeamworkScore == students
  163.                         .Select(t => t.TeamworkScore).Max())
  164.                     .Count()
  165.                 })
  166.                 .Distinct();
  167.  
  168.             foreach (var student in studentsTWScore)
  169.             {
  170.                 Console.WriteLine(student.Max);
  171.             }
  172.  
  173.             //11
  174.             //var groupStudents = students
  175.             //    .GroupBy(s => s.FirstName.First())
  176.             //    .OrderBy(g => g.Key);
  177.  
  178.             ////I set this because console window limits the lines of output and you see only part of the output, you need to manually modify it
  179.             ////the other way is in console window -> properties -> layout -> screen buffer size -> height
  180.             //Console.BufferHeight = 1021;
  181.  
  182.             //foreach (var groupName in groupStudents)
  183.             //{
  184.             //    Console.WriteLine(groupName.Key);
  185.             //    foreach (var student in groupName)
  186.             //    {
  187.             //        Console.WriteLine("  {0} {1}", student.FirstName, student.LastName);
  188.             //    }
  189.             //}
  190.  
  191.             //12
  192.             var groupByType = students
  193.                 .OrderByDescending(s => s.ExamResult)
  194.                 .GroupBy(s => s.StudentType);
  195.  
  196.  
  197.             Console.BufferHeight = 1021;
  198.  
  199.             foreach (var group in groupByType)
  200.             {
  201.                 Console.WriteLine(group.Key);
  202.                 foreach (var student in group)
  203.                 {
  204.                     Console.WriteLine("  {0} {1} - {2}",
  205.                         student.FirstName, student.LastName, student.ExamResult);
  206.                 }
  207.             }
  208.         }
  209.     }
  210. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement