-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathProgram.cs
More file actions
137 lines (70 loc) · 5.14 KB
/
Program.cs
File metadata and controls
137 lines (70 loc) · 5.14 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
//LINQ-ÖVNINGAR
// Vi börjar med att skapa en lista med användare som innehåller 1000 slumpmässigt genererade användare.
// Vi kommer använda denna lista för att utföra LINQ-övningar på dem.
// Titta i User.cs för att se hur User-klassen är uppbyggd och vilka properties den har.
List<User> allUsers = User.GetRandomListOfUsers(10000);
// FILTERING
// 1a. Använd Where() för att sortera ut alla användare i listan som kommer från exempelvis "Sweden".
// 1b. Skriv ut dem i konsolen med allUsers.Foreach(). Fortsätt skriva ut resultatet på liknande säät
// i kommande övningar också.
// 2. Använd Where() för att hitta alla användare vars efternamn börjar på "S".
// 2b. Bland dem, använd Where() för att hitta alla användare som loggat in den senaste veckan. Skriv ut dem i konsolen.
// SORTING
// 3. Ta ut alla användare över 65 år och använd OrderBy() för att sortera användarna i listan efter deras förnamn.
// Tänk på hur du kan räkna ut åldern med hjälp av DateOfBirth.
// 4. Använd OrderByDescending() och FirstOrDefault() för att hitta den användare som har mest DataStored.
// 5. Använd OrderBy() och ThenBy() för att sortera användare efter land och sedan efter efternamn.
// PROJECTION:
// 6. Använd Select() för att skapa en ny lista innehållandes bara användarnas email.
// 7. Använd Select() för att skapa en lista av anonyma objekt med FirstName och Email.
// LITE EXTRA KLURIG KANSKE! Hoppa över om du inte vet vad som menas. (Vad är ens anonyma objekt liksom?)
// 8. Använd Where() och Select() för att få en lista med e-postadresser från användare som har lagrat mer än 5000 MB.
// QUANTIFIERS
// 9. Använd Any() för att kontrollera om det finns någon användare från "USA".
// bool hasUsersFromUSA = SKRIV NÅTT HÄR
// 10. Använd All() för att kontrollera om alla användare har en giltig e-postadress (innehåller '@').
// 11. Använd Select() och Contains() för att kontrollera om det finns någon användare med förnamnet "Anna".
// 11b. Detta är inte jättebra rent minnes- och prestandamässigt. Varför inte tror du och vad skulle ett
// bättre alternativ vara?
// SET OPERATIONS (Här bara med Distinct(), inte Union, Intersect eller Except)
// 12. Ta fram en lista på alla unika länder som våra användare kommer från.
// Tips: Använd först Select() för att göra en ny lista med bara länder. Använd sen Distinct().
// ELEMENTS
// 13. Använd FirstOrDefault() för att hitta den första användaren med ett specifikt efternamn.
// CONVERSION:
// 14. Använd ToDictionary() för att skapa en dictionary där nyckeln är användarens e-post och värdet är deras fullständiga namn.
// AGGREGERING
// 16. Använd Max() för att hitta det högsta värdet av DataStored.
// 17. Använd Min() för att hitta den lägsta åldern bland användarna
// 18. Använd Count() för att räkna hur många användare som har den lägsta åldern, kontra hur många det är som har den högsta åldern.
// 19. Använd Sum() för att beräkna den totala mängden lagrad data av alla användare.
// 20. Använd Average() för att beräkna den genomsnittliga mängden lagrad data.
// 21. Använd Aggregate() för att beräkna den totala mängden lagrad data av alla användare (int).
// Tips: Aggregate använder sig av en Func<int, int, int> där det första int är ackumulatorn och det andra är värdet från varje element i listan och den sista inten är det som returneras och blir den nya ackumulatorn.
// 22. Använd Select() och Aggregate() för att sammanfoga alla användares fullständiga namn till en enda sträng.
// PARTITIONING
// 23. Använd Take() för att ta de första 10 användarna i listan.
// 24. Använd Skip() för att hoppa över de första 990 användarna i listan.
// 25. Använd TakeWhile() för att ta alla användare tills en användare med mindre än 10000 DataStored dyker upp.
// 26. Använd SkipWhile() för att hoppa över alla användare tills en användare med mindre än 10000 DataStored dyker upp.
// GROUPING
// 27. Använd GroupBy() och Count() för att räkna antalet användare per land.
// GROUPING PROJECTION SORTING
// 28. Hur kan du ta reda på vilket land som har användare med högst totala DataStored?
//Alltså, räkna ihop den totala DataStored per land och skriv ut det land som ligger högst.
//Använd dig av så mkt LINQ som möjligt, ex empelvis GroupBy(), Select(), OrderByDescending() och FirstOrDefault().
// STOR DATAKÄLLA!
// 29. Använda LINQ på ännu större datakällor
// Läs in textfilen pg46.txt
// Hur kan du använda LINQ för att analysera den? Exempelvis:
// - Hur många ord finns det i texten?
// - Hur många ord börjar på bokstaven "a"?
// - Vilket är det vanligaste ordet?
// - Hur många ord är längre än 10 tecken?
// - Hur många ord är unika? (Hint: Distinct() )
// - Hur många ord förekommer mer än 10 gånger? (Hint: GroupBy() )
// - Vilka ord förekommer endast en gång?
// En annan övning: Återskapa detta med hjälp av LINQ:
// https://lmnt.me/blog/the-most-mario-colors.html
// Börja med att skapa den grundläggande strukturen med all data,
// Ta sedan ut de olika sorteringarna bloggen gör.