1
+
2
+ // Chunk.cs
3
+ // https://github.com/dotnet/runtime/blob/main/src/libraries/System.Linq/src/System/Linq/Chunk.cs
4
+
5
+ // how do I chunk an enumerable?
6
+ // https://stackoverflow.com/questions/12389203/how-do-i-chunk-an-enumerable
7
+
8
+ var movies = new List < Movie >
9
+ {
10
+ new Movie ( "Titanic" , 1998 , 4.5f ) ,
11
+ new Movie ( "The Fifth Element" , 1997 , 4.6f ) ,
12
+ new Movie ( "Terminator 2" , 1991 , 4.7f ) ,
13
+ new Movie ( "Avatar" , 2009 , 5 ) ,
14
+ new Movie ( "Platoon" , 1986 , 4 ) ,
15
+ new Movie ( "My Neighbor Totoro" , 1988 , 5 )
16
+ } ;
17
+
18
+ Console . WriteLine ( "---------Chunk-----------" ) ;
19
+
20
+ // Chunk
21
+ foreach ( var movie in movies . Where ( movie => movie . Rating > 4.5f ) . Chunk ( 3 ) )
22
+ {
23
+ Console . WriteLine ( string . Join ( "," , movies . Select ( currentMovie => currentMovie . Name ) ) ) ;
24
+ }
25
+
26
+ Console . WriteLine ( "---------DistinctBy-----------" ) ;
27
+
28
+ // DistinctBy
29
+ foreach ( var movie in movies . DistinctBy ( movie => movie . Rating ) )
30
+ {
31
+ Console . WriteLine ( string . Join ( "," , movies . Select ( currentMovie => currentMovie . Name ) ) ) ;
32
+ }
33
+
34
+ Console . WriteLine ( "---------Take-----------" ) ;
35
+
36
+ // Take with Ranges
37
+ foreach ( var movie in movies . Take ( ^ 5 ..3 ) )
38
+ {
39
+ Console . WriteLine ( string . Join ( "," , movies . Select ( currentMovie => currentMovie . Name ) ) ) ;
40
+ }
41
+
42
+ record Movie ( string Name , int Year , float Rating ) ;
0 commit comments