-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathProgram.cs
More file actions
148 lines (115 loc) · 4.84 KB
/
Copy pathProgram.cs
File metadata and controls
148 lines (115 loc) · 4.84 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
using System;
using System.Linq;
using System.Collections.Generic;
namespace LINQLink
{
class Program
{
static void Main(string[] args)
{
var legendOfZeldaGames = LinkBuilder.Games;
// foreach (var game in legendOfZeldaGames){
// Log(game);
// }
// legendOfZeldaGames.ForEach(game => Log(game));
/**
* Any, All
*/
//Do any of the games for the DS have more than 8 boss fights?
var anyDSFights = legendOfZeldaGames.Any(game => game.OriginalConsole == ConsoleEnum.NintendoDS && game.BossFights > 8);
//Do all the Legend of Zelda games have "Link" in the title?
var allLinks = legendOfZeldaGames.All(game => game.Name.Contains("Link"));
/**
* Count, Sum, Average
*/
// How many Legend of Zelda Games have been made?
var count1 = legendOfZeldaGames.Count();
// How many boss fights are there in all of the games?
var sum = legendOfZeldaGames.Sum(game => game.BossFights);
// What is the average number of boss fights per game
var ave = legendOfZeldaGames.Average(game => game.BossFights);
var i = 0;
foreach (var game in legendOfZeldaGames){
i += game.BossFights;
}
var average = i/count1;
/**
* Max / Max
*/
// Which game had the most boss fights?
var mxfights = legendOfZeldaGames.Max(game => game.BossFights);
// Which game had the fewest boss fights?
var mnfights = legendOfZeldaGames.Min(game => game.BossFights);
/**
* OrderBy
*/
// Sort the games in alphabetical order.
var orderedGames = legendOfZeldaGames.OrderBy(game => game.Name);
/**
* Where
*/
/**
* Select / SelectMany
*/
//Which Legend of Zelda games were created before 30 years ago?
var thirty =
//get your data source
from game in legendOfZeldaGames
//create your query
where game.ReleaseYear < 1988
&& game.BossFights > 10
&& game.OriginalConsole == ConsoleEnum.NintendoEntertainmentSystem
//execute your query
select $"{game.Name} has {game.BossFights} boss fights - good luck!";
//Console.WriteLine("thirty:");
//thirty.ToList().ForEach(x => Log(x));
var thirty2 = legendOfZeldaGames
.Where(game => game.BossFights > 10)
.Where(game => game.OriginalConsole == ConsoleEnum.NintendoEntertainmentSystem)
.Where(game => game.ReleaseYear < 1988)
.Select(game => game.Name)
.ToList();
/**
* First / FirstOrDefault, Last / LastOrDefault, Single / SingleOrDefault
*/
// What was the first game released in the 2000s?
var game1 = legendOfZeldaGames
.OrderBy(game => game.ReleaseYear)
.FirstOrDefault(game => game.ReleaseYear > 1999 && game.ReleaseYear < 2010);
//If any, what game was released in 2002?
var game2 = legendOfZeldaGames.FirstOrDefault(game => game.ReleaseYear == 2002);
/**
* Group By
*/
// Group the games by the console.
var gamesByConsole = legendOfZeldaGames.GroupBy(x => x.OriginalConsole);
// foreach( var g in gamesByConsole){
// Log(g);
// }
/**
* Distinct
*/
// Log the distinct (not repeated) consoles for all of the games.
var distinctConsoles = legendOfZeldaGames.Select(x => x.OriginalConsole).Distinct();
/**
* Joins
*/
var gamers = LinkBuilder.Gamers;
//for each gamer, print the gamer's name, their favorite game's title and release date
var join =
from gamer in gamers
join game in legendOfZeldaGames
on gamer.FavoriteGame equals game.Name
select $"{gamer.Name} - {gamer.FavoriteGame}, {game.ReleaseYear}";
}
private static void Log(Game game){
Console.WriteLine($"{game.Name} - {game.ReleaseYear} - {game.OriginalConsole.ToString()}");
}
private static void Log(string message){
Console.WriteLine(message);
}
private static void Log(IGrouping<ConsoleEnum, Game> message){
Console.WriteLine($"{message.Key.ToString()} - {message.Select(x => x.Name + " ~")}");
}
}
}