Ejemplo n.º 1
0
        public static void NonStreamingOperators()
        {
            var numbers = MyLinq.Random().Where(n => n > 0.5).Take(10);

            foreach (var number in numbers)
            {
                Console.WriteLine(number);
            }
        }
Ejemplo n.º 2
0
        static void Main(string[] args)
        {
            var movies = new List <Movie> {
                new Movie {
                    Title = "The Dark Knight", Rating = 8.9f, Year = 2008
                },
                new Movie {
                    Title = "The King's Speech", Rating = 8.0f, Year = 2010
                },
                new Movie {
                    Title = "Casablanca", Rating = 8.5f, Year = 1942
                },
                new Movie {
                    Title = "Star war V", Rating = 8.7f, Year = 1980
                }
            };

            var query = movies.Where(m => m.Year > 2000);

            foreach (var item in query)
            {
                Console.WriteLine(item.Title);
            }
            Console.WriteLine("***********************************");
            query = movies.Filter(m => m.Year > 2000);

            foreach (var item in query)
            {
                Console.WriteLine(item.Title);
            }
            Console.WriteLine("***********************************");
            query = movies.Filter2(m => m.Year > 2000);

            foreach (var item in query)
            {
                Console.WriteLine(item.Title);
            }

            Console.WriteLine("***********************************");
            query = movies.Filter2(m => m.Year > 2000).ToList();// will run query once to get results

            Console.WriteLine(query.Count());
            var enumerator = query.GetEnumerator();

            while (enumerator.MoveNext())
            {
                Console.WriteLine(enumerator.Current.Title);
            }

            Console.WriteLine("***********************************");
            var numbers = MyLinq.Random().Where(n => n > 0.5).Take(10);

            foreach (var item in numbers)
            {
                Console.WriteLine(item);
            }
        }
Ejemplo n.º 3
0
        static void Main(string[] args)
        {
            var numbers = MyLinq.Random().Where(n => n > 0.5).Take(10);

            foreach (var number in numbers)
            {
                Console.WriteLine(number);
            }

            var movies = new List <Movie>
            {
                new Movie {
                    Title = "The Dark Knight", Rating = 8.9f, Year = 2008
                },
                new Movie {
                    Title = "The King's Speech", Rating = 8.0f, Year = 2010
                },
                new Movie {
                    Title = "Casablanca", Rating = 8.5f, Year = 1942
                },
                new Movie {
                    Title = "Star Wars V", Rating = 8.7f, Year = 1980
                }
            };

            //            var query = movies.Filter(m => m.Year > 2000)
            //                .OrderByDescending(m => m.Rating);

            var query = from movie in movies
                        where movie.Year > 2000
                        orderby movie.Rating descending
                        select movie;

            //            var query = Enumerable.Empty<Movie>();
            //            try
            //            {
            //                query = movies.Filter(m => m.Year > 2000);
            //            }
            //            catch (Exception e)
            //            {
            //                Console.WriteLine(e.Message);
            //            }

            //            foreach (var movie in query)
            //            {
            //                Console.WriteLine(movie.Title);
            //            }

            //            Console.WriteLine(query.Count());
            var enumerator = query.GetEnumerator();

            while (enumerator.MoveNext())
            {
                Console.WriteLine(enumerator.Current.Title);
            }
        }
Ejemplo n.º 4
0
        static void Main(string[] args)
        {
            //a deferred execution operator like "Where" is considered lazy, it won't execute until the foreach loop
            //whereas "ToList()", "ToArray()", "Count()" are not, they will execute right away

            //here we are calling our Random method, but it won't create an infinate loop because we are only "yielding" the first 10(.Take(10)) results
            //this is because Take() is a streaming operator it only goes through the data until it gets the number of items it needs then stops
            //if we did not have the Take() streaming operator below, the below query (while deferred) produces an infinate loop
            var numbers = MyLinq.Random().Where(n => n > 0.5).Take(10);

            //because Mylinq.Random() is a deferred execution method it doesn't get executed until the following foreach loop
            foreach (var number in numbers)
            {
                Console.WriteLine(number);
            }


            //you can use streaming and non streaming in the same statement.  this would be something like
            // var query = movies.Where(m => m.Year > 2000)
            //					 .OrderByDescending(m => m.Rating)
            //above the streaming part of the the query is the Linq operator "Where" this is just getting movies > 2000 and creating that subset of data
            //the non streaming part is "OrderByDescending" this has to look at the entire subset to order them
            //it makes sense to do it this way so you are not ordering the entire data set then pulling out the data you need, you are only ordering the movies
            //that were released after 2000, it is more efficient this way when in comes to in memory data(List, Array, IEnumerable)

            var movies = new List <Movie>
            {
                new Movie {
                    Title = "The Dark Knight", Rating = 8.9f, Year = 2008
                },
                new Movie {
                    Title = "Teh King's Speech", Rating = 8.0f, Year = 2010
                },
                new Movie {
                    Title = "Casablanca", Rating = 8.5f, Year = 1942
                },
                new Movie {
                    Title = "Star Wars V", Rating = 8.7f, Year = 1980
                },
            };


            //here we are building the query
            //if you want to not use deferred excution and build a concrete list, you need to add .ToList(), .ToArray(), .ToDictionary() at end of the query at this point we
            //have a list of movies we can the do things on that list
            var query = movies.Filter(m => m.Year > 2000);

            //with deferred execution queries do not get executed until the foreach loop
            //this is the same as PHP execute command I think
            foreach (var movie in query)
            {
                Console.WriteLine(movie.Title);
            }
        }
Ejemplo n.º 5
0
        static void Main(string[] args)
        {
            var numbers = MyLinq.Random().Where(n => n > 0.5).Take(10);

            foreach (var number in numbers)
            {
                Console.WriteLine(number);
            }

            var movies = new List <Movie>
            {
                new Movie {
                    Title = "The Dark Knight", Rating = 8.9f, Year = 2008
                },
                new Movie {
                    Title = "The Kings Speech", Rating = 8.0f, Year = 2010
                },
                new Movie {
                    Title = "Casablanca", Rating = 8.5f, Year = 1942
                },
                new Movie {
                    Title = "Star Wars V", Rating = 8.7f, Year = 1980
                },
            };

            var query_1 = Enumerable.Empty <Movie>();

            query_1 = movies.Where(m => m.Year > 2000)

                      /**
                       * OrderBy is a Non streaming operator where Order is a streaming operator
                       * So it is better to filter first then sort
                       */
                      .OrderByDescending(m => m.Rating);

            //Later
            query_1 = query_1.Take(1);
            foreach (var movie in query_1)
            {
                Console.WriteLine(movie.Title);
            }

            //Custom Filter
            //var query_2 = movies.Filter(m => m.Year > 2000);

            //Forces to execute immediately rather than deferred execution
            //query_2.Count();

            //var enumerator = query_2.GetEnumerator();
            //while (enumerator.MoveNext())
            //{
            //    Console.WriteLine(enumerator.Current.Title);
            //}
        }
Ejemplo n.º 6
0
        static void Main(string[] args)
        {
            var numbers = MyLinq.Random().Where(n => n > 0.5).Take(10);

            foreach (var number in numbers)
            {
                Console.WriteLine(number);
            }

            var movies = new List <Movie> {
                new Movie {
                    Title = "The Dark Kniht", Rating = 8.9f, Year = 2008
                },
                new Movie {
                    Title = "The King's Speech", Rating = 8.0f, Year = 2010
                },
                new Movie {
                    Title = "Casablanca", Rating = 8.5f, Year = 1942
                },
                new Movie {
                    Title = "Star Wars V", Rating = 8.7f, Year = 1980
                }
            };
            var sw = new Stopwatch();

            //var query = movies.Where(m => m.Year > 2000);.
            //var query = movies.Filter(m => m.Year > 2000);
            //var query = movies.Where(m => m.Year > 2000);
            //var query = movies.Filter(m => m.Year > 2000);


            //sw.Start();
            //var query = movies.AsParallel().Where(m => m.Year > 2000);
            //var query = movies.Where(m => m.Year > 2000);
            //var query = movies.Filter2(m => m.Year > 2000);


            var query = movies.Filter(m => m.Year > 2000);

            //foreach (var movie in query) {
            //    Console.WriteLine(movie.Title);
            //}
            //sw.Stop();
            //Console.WriteLine("Elapsed={0}", sw.Elapsed);
            Console.WriteLine(query.Count());
            var enumerator = query.GetEnumerator();

            while (enumerator.MoveNext())
            {
                Console.WriteLine(enumerator.Current.Title);
            }

            Console.ReadLine();
        }
Ejemplo n.º 7
0
        static void Main(string[] args)
        {
            var numbers = MyLinq.Random().Where(n => n > 0.5).Take(10);

            foreach (var number in numbers)
            {
                Console.WriteLine($"Skaiciu: {number}");
            }


            var movies = new List <Movie>()
            {
                new Movie()
                {
                    Title = "Inception", Rating = 9.1f, Year = 2009
                },
                new Movie()
                {
                    Title = "The King's Speach", Rating = 8.0f, Year = 2004
                },
                new Movie()
                {
                    Title = "Ekskursante", Rating = 8.5f, Year = 2014
                },
                new Movie()
                {
                    Title = "Casablanka", Rating = 8.5f, Year = 1942
                },
            };


            var query = movies.Filter(m => m.Year > 2000)
                        .OrderByDescending(m => m.Rating);

            var query2 = from movie in movies
                         where movie.Year > 2000
                         orderby movie.Rating descending
                         select movie;


            var enumerator = query2.GetEnumerator();

            //Console.WriteLine(query.Count());
            while (enumerator.MoveNext())
            {
                Console.WriteLine(enumerator.Current.Title);
            }


            //foreach (var movie in query)
            //{
            //    Console.WriteLine(movie.Title);
            //}
        }
Ejemplo n.º 8
0
        static void Main(string[] args)
        {
            var numbers = MyLinq.Random().Where(n => n > 0.5).Take(10);

            foreach (var number in numbers)
            {
                Console.WriteLine(number);
            }


            var movies = new List <Movie>()
            {
                new Movie()
                {
                    Title = "The Dark knight", Year = 2008, Rating = 8.9F
                },
                new Movie()
                {
                    Title = "The king's speech", Year = 2010, Rating = 8.0F
                },
                new Movie()
                {
                    Title = "Casablanca", Year = 1942, Rating = 8.5F
                },
                new Movie()
                {
                    Title = "StarWar V", Year = 1980, Rating = 8.7F
                }
            };

            var query = movies.Filter(x => x.Year > 2000)/*.ToList()
                                                          * .Take(1)Where(m => m.Year > 2000)*/
                        .OrderByDescending(m => m.Rating);

            //It's more efficient to Always filter before sorting

            //Where query Operator have differed excecution

            //ToList and Count query Operators forces immediate excecution

            var enumerator = query.GetEnumerator();

            /*Console.WriteLine(query.Count());*/
            while (enumerator.MoveNext())
            {
                Console.WriteLine(enumerator.Current.Title);
            }

            /*foreach (var movie in query)
             * {
             *  Console.WriteLine(movie.Title);
             * }*/
        }
Ejemplo n.º 9
0
        static void Main(string[] args)
        {
            var numbers = MyLinq.Random()
                          .Where(n => n > 0.5)
                          .Take(10);

            foreach (var number in numbers)
            {
                Console.WriteLine(number);
            }

            var movies = new List <Movie>
            {
                new Movie {
                    Title = "The dark knight", Rating = 8.9f, Year = 2020
                },
                new Movie {
                    Title = "The purple knight", Rating = 7.9f, Year = 2019
                },
                new Movie {
                    Title = "The red knight", Rating = 3.9f, Year = 2020
                },
                new Movie {
                    Title = "The blue knight", Rating = 4.9f, Year = 2018
                },
                new Movie {
                    Title = "The brown knight", Rating = 2.9f, Year = 2019
                },
                new Movie {
                    Title = "The pink knight", Rating = 10.0f, Year = 2017
                },
                new Movie {
                    Title = "The yellow knight", Rating = 6.4f, Year = 2016
                }
            };


            var query = movies.Where(w => w.Year > 2017)
                        .OrderByDescending(w => w.Rating);

            var enumerator = query.GetEnumerator();

            while (enumerator.MoveNext())
            {
                Console.WriteLine(enumerator.Current.Title);
            }
        }
Ejemplo n.º 10
0
        static void Main(string[] args)
        {
            var numbers = MyLinq.Random().Where(n => n > 0.5).Take(10).OrderBy(n => n);

            foreach (var number in numbers)
            {
                Console.WriteLine(number);
            }


            var movies = new List <Movie>
            {
                new Movie {
                    Title = "The Dark Knight", Rating = 8.9f, Year = 2008
                },
                new Movie {
                    Title = "The King's Speech", Rating = 8.0f, Year = 2010
                },
                new Movie {
                    Title = "Casablanca", Rating = 8.5f, Year = 1942
                },
                new Movie {
                    Title = "Star Wars V", Rating = 8.7f, Year = 1980
                }
            };
            var DeferredExecutionTime      = DateTime.Now;
            var queryWithDeferredExecution = movies.Filter(x => x.Year > 2008);
            var enumerator2 = queryWithDeferredExecution.GetEnumerator();

            while (enumerator2.MoveNext())
            {
                Console.WriteLine(enumerator2.Current.Title);
            }
            Console.WriteLine("Time spend of Deferred Execution " + (DateTime.Now - DeferredExecutionTime).TotalMilliseconds);

            var DeferredImmediatelyTime = DateTime.Now;
            var queryWithImmediately    = movies.Filter(x => x.Year > 2008).OrderByDescending(x => x.Rating).ToList();

            var enumerator = queryWithImmediately.GetEnumerator();

            while (enumerator.MoveNext())
            {
                Console.WriteLine(enumerator.Current.Title);
            }
            Console.WriteLine("Time spend of Immediately Execution " + (DateTime.Now - DeferredImmediatelyTime).TotalMilliseconds);
        }
Ejemplo n.º 11
0
        static void Main(string[] args)
        {
            var numbers = MyLinq.Random().Where(n => n > 0.5).Take(10); //exp of Deffered Streaming operators

            foreach (var number in numbers)
            {
                WriteLine(number);
            }

            WriteLine();
            var movies = new List <Movie>
            {
                new Movie {
                    Title = "The Dark Knight", Rating = 8.9f, Year = 2008
                },
                new Movie {
                    Title = "The King's Speech", Rating = 8.0f, Year = 2010
                },
                new Movie {
                    Title = "Casablanca", Rating = 8.5f, Year = 1942
                },
                new Movie {
                    Title = "Star Wars V", Rating = 8.7f, Year = 1980
                }
            };

            var query = movies.Where(m => m.Year > 2000)   //"where" - Streaming Operator-looks at each item and if finds
                                                           //a match Returns/Yeilds that match to main code right away, then goes back to eterate futher
                        .OrderByDescending(m => m.Rating); // - NonStreaming Operator-iterate through ALL items and then goes back to the main code

            //foreach (var movie in query)
            //{
            //    WriteLine(movie.Title);
            //}

            //Console.WriteLine(query.Count());
            var enumerator = query.GetEnumerator();

            while (enumerator.MoveNext())
            {
                Console.WriteLine(enumerator.Current.Title);
            }


            ReadKey();
        }
Ejemplo n.º 12
0
        static void Main(string[] args)
        {
            var movies = new List <Movie>
            {
                new Movie {
                    Title = "The Dark Knight", Rating = 8.9f, Year = 2008
                },
                new Movie {
                    Title = "The King's Speech", Rating = 8.0f, Year = 2010
                },
                new Movie {
                    Title = "Casablanca", Rating = 8.5f, Year = 1942
                },
                new Movie {
                    Title = "Star Wars V", Rating = 8.7f, Year = 1980
                }
            };

            var query = movies.Where(m => m.Year > 2000)
                        .OrderByDescending(m => m.Rating);

            foreach (var movie in query)
            {
                Console.WriteLine(movie.Title);
            }

            Console.WriteLine("*************");

            var query2     = movies.Filter(m => m.Year > 2000);
            var enumerator = query2.GetEnumerator();

            while (enumerator.MoveNext())
            {
                Console.WriteLine(enumerator.Current.Title);
            }

            Console.WriteLine("*************");

            var q3 = MyLinq.Random().Where(x => x > 0.5).Take(10);

            foreach (var i in q3)
            {
                System.Console.WriteLine(i);
            }
        }
Ejemplo n.º 13
0
        static void Main(string[] args)
        {
            var numbers = MyLinq.Random().Where(n => n > 0.5).Take(10);

            foreach (var number in numbers)
            {
                Console.WriteLine(number);
            }

            var movies = new List <Movie>
            {
                new Movie {
                    Title = "The Dark Knight", Rating = 8.9f, Year = 2008
                },
                new Movie {
                    Title = "The King' Speech", Rating = 8.0f, Year = 2010
                },
                new Movie {
                    Title = "Casablanca", Rating = 8.5f, Year = 1942
                },
                new Movie {
                    Title = "Star Wars V", Rating = 8.7f, Year = 1980
                }
            };

            //var query = movies.Where(m => m.Year > 2000);
            //var query = movies.Filter(m => m.Year > 2000);

            var query = movies.Where(m => m.Year > 2000)
                        .OrderByDescending(m => m.Rating);

            var enumerator = query.GetEnumerator();

            while (enumerator.MoveNext())
            {
                Console.WriteLine(enumerator.Current.Title);
            }

            //foreach (var movie in query)
            //{
            //    Console.WriteLine(movie.Title);
            //}
        }
Ejemplo n.º 14
0
        static void Main(string[] args)
        {
            //var randomNum = new Random();

            var getNum = MyLinq.Random().Where(n => n < .3).OrderBy(n => n).Take(10);

            foreach (var item in getNum)
            {
                Console.WriteLine(item);
            }

            var movies = new List <Movies>()
            {
                new Movies {
                    Title = "Airbender", Rating = 1.9f, Year = 1999
                },
                new Movies {
                    Title = "Transformers", Rating = 4.8f, Year = 2007
                },
                new Movies {
                    Title = "Patton", Rating = 4.9f, Year = 1970
                },
                new Movies {
                    Title = "Trolls", Rating = 4.6f, Year = 2018
                },
                new Movies {
                    Title = "Batman", Rating = 3.8f, Year = 1998
                }
            };
            var query       = movies.Where(m => m.Year > 2000).OrderBy(m => m.Title);
            var ennumerator = query.GetEnumerator();

            while (ennumerator.MoveNext())
            {
                Console.WriteLine(ennumerator.Current.Title);
            }
            Console.WriteLine("-----------------");
            foreach (var movie in query)
            {
                Console.WriteLine(movie.Title);
            }
        }
Ejemplo n.º 15
0
        static void Main(string[] args)
        {
            var numbers = MyLinq.Random().Where(n => n > 0.5).Take(10);

            foreach (var number in numbers)
            {
                Console.WriteLine(number);
            }

            var movies = new List <Movie>
            {
                new Movie {
                    Title = "The Dark Knight", Rating = 8.9f, Year = 2008
                },
                new Movie {
                    Title = "The King's Speech", Rating = 8.0f, Year = 2010
                },
                new Movie {
                    Title = "Casablanca", Rating = 88.5f, Year = 1942
                },
                new Movie {
                    Title = "Star Wars V", Rating = 8.7f, Year = 1980
                },
            };

            //var query = movies.Where(m => m.Year > 2000)
            //    .OrderBy(m => m.Rating);

            var query = from movie in movies
                        where movie.Year > 2000
                        orderby movie.Rating descending
                        select movie;

            var enumartor = query.GetEnumerator();

            while (enumartor.MoveNext())
            {
                Console.WriteLine(enumartor.Current.Title);
            }

            Console.ReadLine();
        }
Ejemplo n.º 16
0
        static void Main(string[] args)
        {
            var numbers = MyLinq.Random().Where(n => n > 0.4).Take(10);

            foreach (var number in numbers)
            {
                Console.WriteLine(number);
            }

            var movies = new List <Movie>
            {
                new Movie {
                    Title = "The Dark Knight", Rating = 8.9f, Year = 2012
                },
                new Movie {
                    Title = "The King's Speech", Rating = 8.5f, Year = 2007
                },
                new Movie {
                    Title = "Casablanca", Rating = 8.2f, Year = 1900
                },
                new Movie {
                    Title = "Start Wars V", Rating = 8.3f, Year = 2004
                }
            };

            var query = movies.Filter(m => m.Year > 2000).ToList().Take(1);

            Console.WriteLine(query.Count());
            IEnumerator <Movie> enumerator = query.GetEnumerator();

            while (enumerator.MoveNext())
            {
                Console.WriteLine(enumerator.Current.Title);
            }
            //foreach (var movie in query)
            //{
            //    Console.WriteLine(movie.Title);
            //}

            Console.ReadKey();
        }
Ejemplo n.º 17
0
        static void Main(string[] args)
        {
            var movies = new List <Movie>()
            {
                new Movie()
                {
                    Title = "The Dark Knight", Rating = 8.9f, Year = 2008
                },
                new Movie()
                {
                    Title = "The King's Speech", Rating = 8.0f, Year = 2010
                },
                new Movie()
                {
                    Title = "Casablanca", Rating = 8.5f, Year = 1942
                },
                new Movie()
                {
                    Title = "Star Wars V", Rating = 8.7f, Year = 1980
                }
            };

            var query = movies.Filter(m => m.Year > 2000);

            var enumerator = query.GetEnumerator();

            while (enumerator.MoveNext())
            {
                Console.WriteLine(enumerator.Current.Title);
            }

            //This uses a static method with an infinite loop, which uses deferred execution (facilitated by 'yield return'),
            //to allow only 10 results to be returned, rather than looping forever. This is because the Random() method yields to
            //caller - Take(10) - which completes once 10 values have been found.
            var numbers = MyLinq.Random().Where(n => n > 0.5).Take(10);

            foreach (var number in numbers)
            {
                Console.WriteLine(number);
            }
        }
Ejemplo n.º 18
0
        private static void Main()
        {
            // streeming, non streeming
            var numbers = MyLinq.Random().Where(n => n > 0.5).Take(10);

            foreach (var number in numbers)
            {
                Console.WriteLine(number);
            }

            var movies = new List <Movies>
            {
                new Movies {
                    Rate = 8.9f, Title = "The Dark Night", Year = 2008
                },
                new Movies {
                    Rate = 9.8f, Title = "Cazablanca", Year = 1942
                },
                new Movies {
                    Rate = 8.9f, Title = "The King's Speach", Year = 2010
                },
                new Movies {
                    Rate = 9.8f, Title = "Star Ware V", Year = 1980
                }
            };

            var query = movies.Filter(m => m.Year > 2000).ToList();

            Console.WriteLine(query.Count);

            foreach (var movie in query)
            {
                Console.WriteLine(movie.Title);
            }

            //var enumrator = query.GetEnumerator();
            //while (enumrator.MoveNext())
            //{
            //    Console.WriteLine(enumrator.Current.Title);
            //}
        }
Ejemplo n.º 19
0
        static void Main(string[] args)
        {
            var numbers = MyLinq.Random().Where(n => n > 0.5).Take(10).ToList();

            numbers.ForEach(n => Console.WriteLine(n));

            var movies = new List <Movie>
            {
                new Movie {
                    Title = "The Dark Night", Rating = 8.9f, Year = 2008
                },
                new Movie {
                    Title = "The King's Speech", Rating = 8.0f, Year = 2010
                },
                new Movie {
                    Title = "Casablanca", Rating = 8.5f, Year = 1942
                },
                new Movie {
                    Title = "Star Wars V", Rating = 8.7f, Year = 1980
                }
            };

            var selectedMovies = movies.Where(m => m.Year > 1950)
                                 .OrderByDescending(m => m.Rating)
                                 .ToList();

            // var selectedMovies = movies.Filter(m => m.Year > 2000).ToList();
            // selectedMovies.ForEach(m => Console.WriteLine($"{m.Title,-20} {m.Rating,5} {m.Year,5}"));

            //var enumerator = selectedMovies.GetEnumerator();
            //while (enumerator.MoveNext())
            //{
            //    Console.WriteLine(enumerator.Current.Title);
            //}

            Console.WriteLine("\n\nPress any key to exit...");
            Console.ReadLine();
        }
Ejemplo n.º 20
0
        static void Main(string[] args)
        {
            var numbers = MyLinq.Random().Where(xp => xp > 0.5).Take(10);

            foreach (var number in numbers)
            {
                Console.WriteLine(number);
            }

            var movies = new List <Movie>
            {
                new Movie {
                    Title = "The Dark Knight", Rating = 8.9f, Year = 2008
                },
                new Movie {
                    Title = "The King's Speech", Rating = 8.0f, Year = 2010
                },
                new Movie {
                    Title = "Casablanca", Rating = 8.5f, Year = 1942
                },
                new Movie {
                    Title = "Star Wars V", Rating = 8.7f, Year = 1980
                }
                //new Movie { Title = "", Rating = 8.f, Year = };
            };


            var query = movies.Where(xD => xD.Year > 2000).OrderByDescending(xD => xD.Rating);

            //Console.WriteLine(query.Count());

            var enumerator = query.GetEnumerator();

            while (enumerator.MoveNext())
            {
                Console.WriteLine(enumerator.Current.Title);
            }
        }
Ejemplo n.º 21
0
        static void Main(string[] args)
        {
            var numbers = MyLinq.Random().Where(n => n > 0.5).Take(10);

            foreach (var number in numbers)
            {
                Console.WriteLine(number);
            }


            var movies = new List <Movie>
            {
                new Movie {
                    Title = "Spirited Away", Rating = 8.5f, Year = 2001
                },
                new Movie {
                    Title = "Your Name.", Rating = 8.5f, Year = 2016
                },
                new Movie {
                    Title = "Princess Mononoke", Rating = 8.4f, Year = 1997
                },
                new Movie {
                    Title = "A Silent Voice", Rating = 8.3f, Year = 2016
                },
                new Movie {
                    Title = "My Neighbor Totoro", Rating = 8.1f, Year = 1988
                }
            };

            var query = movies.Where(m => m.Year > 2000).OrderByDescending(m => m.Rating);

            var enumerator = query.GetEnumerator();
            //while (enumerator.MoveNext())
            //{
            //    Console.WriteLine(enumerator.Current.Title);
            //}
        }
Ejemplo n.º 22
0
        static void Main(string[] args)
        {
            IEnumerable <double> numbers = MyLinq.Random().Where(n => n > 0.5).Take(10);

            foreach (var number in numbers)
            {
                Console.WriteLine(number);
            }

            List <Movie> movies = new List <Movie>
            {
                new Movie {
                    Title = "The Dark Knight", Rating = 8.9f, Year = 2008
                },
                new Movie {
                    Title = "The Kings Speech", Rating = 8.0f, Year = 2010
                },
                new Movie {
                    Title = "Casablanca", Rating = 8.5f, Year = 1942
                },
                new Movie {
                    Title = "Star Wars V", Rating = 8.7f, Year = 1980
                }
            };

            IEnumerable <Movie> query = from movie in movies
                                        where movie.Year > 2000
                                        orderby movie.Rating descending
                                        select movie;

            IEnumerator <Movie> enumerator = query.GetEnumerator();

            while (enumerator.MoveNext())
            {
                Console.WriteLine(enumerator.Current.Title);
            }
        }
Ejemplo n.º 23
0
        static void Main(string[] args)
        {
            var movies = new List <Movie>
            {
                new Movie {
                    Title = "The Dark Knight", Rating = 8.9f, Year = 2008
                },
                new Movie {
                    Title = "The King's Speech", Rating = 8.0f, Year = 2010
                },
                new Movie {
                    Title = "Casablanca", Rating = 8.5f, Year = 1942
                },
                new Movie {
                    Title = "Star Wars V", Rating = 8.7f, Year = 1980
                }
            };

            // Want movies after year 2000
            // Method query
            Console.WriteLine("-----Movies after 2000 - method query-----\n");
            var query = movies.Where(m => m.Year > 2000);

            foreach (var m in query)
            {
                Console.WriteLine(m.Title);
            }

            // Custom extension method - undeferred
            Console.WriteLine("\n\n-----Movies after 2000 - custom method, undeferred-----\n");
            var query2 = movies.Filter(m => m.Year > 2000);

            Console.WriteLine(query2.Count());
            foreach (var m in query2)
            {
                Console.WriteLine(m.Title);
            }

            // Custom extension method - deferred
            Console.WriteLine("\n\n-----Movies after 2000 - custom method, deferred-----\n");
            var query3 = movies.FilterDeferred(m => m.Year > 2000);

            Console.WriteLine(query3.Count());
            foreach (var m in query3)
            {
                Console.WriteLine(m.Title);
            }

            // Using enumerator
            Console.WriteLine("\n\n-----Movies after 2000 - enumerator-----\n");
            var enumerator = query2.GetEnumerator();

            while (enumerator.MoveNext())
            {
                Console.WriteLine(enumerator.Current.Title);
            }

            // Undeferred execution with exception
            Console.WriteLine("\n\n-----Movies after 2000 - custom method, undeferred, exception-----\n");
            var query4 = Enumerable.Empty <Movie>();

            try
            {
                query4 = movies.FilterDeferred(m => m.YearExc > 2000).ToList();
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
            Console.WriteLine(query4.Count());
            foreach (var m in query4)
            {
                Console.WriteLine(m.Title);
            }

            // Deferred execution with exception
            Console.WriteLine("\n\n-----Movies after 2000 - custom method, deferred, exception-----\n");
            var query5 = movies.FilterDeferred(m => m.YearExc > 2000);

            try
            {
                Console.WriteLine(query4.Count());
                foreach (var m in query4)
                {
                    Console.WriteLine(m.Title);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }

            // Deferred execution with infinite source
            Console.WriteLine("\n\n-----Infinite list of random numbers, deferred-----\n");
            var numbers = MyLinq.Random().Where(n => n > 0.5).Take(10);

            foreach (var num in numbers)
            {
                Console.WriteLine(num);
            }
        }
Ejemplo n.º 24
0
        static void Main(string[] args)
        {
            #region Region7 - Streaming opeartors

            Console.WriteLine("Streaming opeartors");

            var numbers = MyLinq.Random().Where(n => n > 0.5).Take(10);

            foreach (var number in numbers)
            {
                Console.WriteLine(number);
            }

            Console.WriteLine("**********");
            Console.WriteLine("\r");

            #endregion

            /*******************************************/

            #region Region6 - Non-streaming operator (OrderBy)

            /*
             *  Operator that offer deferred execution also can be devided into
             *  streaming operator(Where) and non-streaming operator(OrderBy)
             */

            Console.WriteLine("Non-streaming operator (OrderBy)");

            var movies6 = new List <Movie> {
                new Movie {
                    Title = "the dark", Rating = 8.9f, Year = 2008
                },
                new Movie {
                    Title = "the king", Rating = 8.0f, Year = 2010
                },
                new Movie {
                    Title = "casablanca", Rating = 8.5f, Year = 1942
                },
                new Movie {
                    Title = "star wars", Rating = 8.7f, Year = 1980
                }
            };

            var query6 = movies6.Where(m => m.Year > 2000)
                         .OrderByDescending(m => m.Rating);

            var enumerator3 = query6.GetEnumerator();
            while (enumerator3.MoveNext())
            {
                Console.WriteLine(enumerator3.Current.Title);
            }

            Console.WriteLine("**********");
            Console.WriteLine("\r");

            #endregion

            /*******************************************/

            #region Region5 - Streaming operator (Where)

            /*
             *  Operator that offer deferred execution also can be devided into
             *  streaming operator(Where) and non-streaming operator(OrderBy)
             */

            Console.WriteLine("Streaming operator (Where)");

            var movies5 = new List <Movie> {
                new Movie {
                    Title = "the dark", Rating = 8.9f, Year = 2008
                },
                new Movie {
                    Title = "the king", Rating = 8.0f, Year = 2010
                },
                new Movie {
                    Title = "casablanca", Rating = 8.5f, Year = 1942
                },
                new Movie {
                    Title = "star wars", Rating = 8.7f, Year = 1980
                }
            };

            var query5 = movies5.Where(m => m.Year > 2000);

            var enumerator2 = query5.GetEnumerator();
            while (enumerator2.MoveNext())
            {
                Console.WriteLine(enumerator2.Current.Title);
            }

            Console.WriteLine("**********");
            Console.WriteLine("\r");

            #endregion

            /*******************************************/

            #region Region4 - Custom filter operator with deferred execution and GetEnumerator()"

            Console.WriteLine("Custom filter operator with deferred execution and GetEnumerator()");

            var movies4 = new List <Movie> {
                new Movie {
                    Title = "the dark", Rating = 8.9f, Year = 2008
                },
                new Movie {
                    Title = "the king", Rating = 8.0f, Year = 2010
                },
                new Movie {
                    Title = "casablanca", Rating = 8.5f, Year = 1942
                },
                new Movie {
                    Title = "star wars", Rating = 8.7f, Year = 1980
                }
            };

            var query4 = movies4.FilterWithDeferredExecution(m => m.Year > 2000);

            var enumerator = query4.GetEnumerator();
            while (enumerator.MoveNext())
            {
                Console.WriteLine(enumerator.Current.Title);
            }

            Console.WriteLine("**********");
            Console.WriteLine("\r");

            #endregion

            /*******************************************/

            #region Region3 - Custom filter operator with deferred execution given by "yield return"

            Console.WriteLine("Custom filter operator with deferred execution given by yield return");

            var movies3 = new List <Movie> {
                new Movie {
                    Title = "the dark", Rating = 8.9f, Year = 2008
                },
                new Movie {
                    Title = "the king", Rating = 8.0f, Year = 2010
                },
                new Movie {
                    Title = "casablanca", Rating = 8.5f, Year = 1942
                },
                new Movie {
                    Title = "star wars", Rating = 8.7f, Year = 1980
                }
            };

            var query3 = movies3.FilterWithDeferredExecution(m => m.Year > 2000);

            foreach (var movie in query3)
            {
                Console.WriteLine(movie.Title);
            }

            Console.WriteLine("**********");
            Console.WriteLine("\r");

            #endregion

            /*******************************************/

            #region Region2 - Custom filter operator

            Console.WriteLine("Custom filter operator");

            var movies2 = new List <Movie> {
                new Movie {
                    Title = "the dark", Rating = 8.9f, Year = 2008
                },
                new Movie {
                    Title = "the king", Rating = 8.0f, Year = 2010
                },
                new Movie {
                    Title = "casablanca", Rating = 8.5f, Year = 1942
                },
                new Movie {
                    Title = "star wars", Rating = 8.7f, Year = 1980
                }
            };

            var query2 = movies2.Filter(m => m.Year > 2000);

            foreach (var movie in query2)
            {
                Console.WriteLine(movie.Title);
            }

            Console.WriteLine("**********");
            Console.WriteLine("\r");

            #endregion

            /*******************************************/

            #region Region1 - Base code

            Console.WriteLine("Base code");

            var movies = new List <Movie> {
                new Movie {
                    Title = "the dark", Rating = 8.9f, Year = 2008
                },
                new Movie {
                    Title = "the king", Rating = 8.0f, Year = 2010
                },
                new Movie {
                    Title = "casablanca", Rating = 8.5f, Year = 1942
                },
                new Movie {
                    Title = "star wars", Rating = 8.7f, Year = 1980
                }
            };

            var query = movies.Where(m => m.Year > 2000);

            foreach (var movie in query)
            {
                Console.WriteLine(movie.Title);
            }

            Console.WriteLine("**********");
            Console.WriteLine("\r");

            #endregion

            /*******************************************/

            // Keep the console window open in debug mode.
            Console.WriteLine("Press any key to exit.");
            Console.ReadKey();
        }
Ejemplo n.º 25
0
        static void Main(string[] args)
        {
            var movies = new List <Movie>
            {
                new Movie {
                    Title = "Forest Gump", Rating = 8.5f, Year = 1994
                },
                new Movie {
                    Title = "Avatar", Rating = 7.4f, Year = 2009
                },
                new Movie {
                    Title = "Saving Private Ryan", Rating = 8.1f, Year = 1998
                },
                new Movie {
                    Title = "Cast Away", Rating = 7.5f, Year = 2000
                }
            };

            Console.WriteLine("****Custom Filter [defered execution] operator writed in extension method syntax****");
            // Custom Filter operator which uses deferred execution with yield return
            // that runs the same as Linq query
            // Query does no real work until we force the query to produce a result
            var query      = movies.Filter(x => x.Year > 1999);
            var enumerator = query.GetEnumerator();

            // Produce result that force execution
            while (enumerator.MoveNext())
            {
                Console.WriteLine(enumerator.Current.Title);
            }

            Console.WriteLine("****Count [immediate execution] operator writed in extension method syntax****");
            // Count operator which uses immediate execution with yield return
            Console.WriteLine(query.Count());

            Console.WriteLine("****Where [deferred streaming execution] operator writed in extension method syntax****");
            // Count operator which uses deferred streaming execution with yield return
            query      = movies.Where(x => x.Year > 1999);
            enumerator = query.GetEnumerator();

            while (enumerator.MoveNext())
            {
                Console.WriteLine(enumerator.Current.Title);
            }

            Console.WriteLine("****Where [deferred streaming execution] and then ToList [immediate execution] operators writed in extension method syntax****");
            // Where operator which uses deferred streaming execution with yield return command
            // but ended with ToList which uses immediate execution with simple return command
            query      = movies.Where(x => x.Year > 1999).ToList();
            enumerator = query.GetEnumerator();

            while (enumerator.MoveNext())
            {
                Console.WriteLine(enumerator.Current.Title);
            }

            Console.WriteLine("****Where [deferred streaming execution] and then OrderByDescending [deferred non-streaming execution] operators writed in extension method syntax****");
            // Where operator which uses deferred streaming execution with yield return command
            // but ended with OrderByDescending which uses deferred non-streaming execution with yield return command
            query      = movies.Where(x => x.Year > 1999).OrderByDescending(m => m.Rating);
            enumerator = query.GetEnumerator();

            while (enumerator.MoveNext())
            {
                Console.WriteLine(enumerator.Current.Title);
            }

            Console.WriteLine("****Where [deferred streaming execution] and then order by descending [deferred non-streaming execution] operators writed in query syntax****");
            // Where operator which uses deferred streaming execution with yield return command
            // but ended with order by descending which uses deferred non-streaming execution with yield return command
            query = from movie in movies
                    where movie.Year > 1999
                    orderby movie.Rating descending
                    select movie;

            enumerator = query.GetEnumerator();

            while (enumerator.MoveNext())
            {
                Console.WriteLine(enumerator.Current.Title);
            }

            Console.WriteLine("****Call InfiniteRandom() method which is infinite loop that stopped after taking 10 elements****");

            var numbers = MyLinq.InfiniteRandom().Where(x => x > 50).Take(10);

            foreach (var number in numbers)
            {
                Console.WriteLine(number);
            }

            // Sum Up
            // 1 [immediate execution] means that the data source is read and the operation
            // is performed at the point in the code where the query is declared.
            // 2 [deferred execution] means that the operation is not performed at the point in the code
            // where the query is declared. The operation is performed only when the query variable is enumerated
            // 3 [streaming operators] do not have to read all the source data before they can yield a result element.
            // 4 [non-streaming operators] must read all the source data before they can yield a result element.
        }