
Harness language integrated query to query collections with from, where, and select, then execute the query to retrieve results similar to sql.
Learn to perform LINQ queries on objects by filtering four character names, projecting to a collection of names, and ordering by weight, name, and height.
Learn how lambda expressions and the lambda operator create inline methods for use with LINQ and extension methods, enabling concise filtering of odd numbers in a list of numbers.
Master lambda-linq methods to min, max, sum, and oftype, transform an enumerable to a list, and filter with where for mixed-type collections.
Explore the difference between where and select in C#. Use a warrior list to filter by height with where and then project heights with select.
Demonstrate the built-in for each method on lists with a lambda expression. Print warrior heights on one line using console.writeline and string.join as a concise alternative to a for loop.
Extend integer arrays with a static extension method using the this keyword to enable intArray.sort(). They apply only to the extended type, such as int[], and live in a class.
Learn how to extend arrays with multiple argument extension methods, add an optional reverse parameter defaulting to false, and overload methods to sort, reverse, or both without repetition.
Learn to extend a class you can't modify in C# by adding an extension method to a point class, compute the distance to another point, and return a distance object.
Discover how generic methods enable comparing values of any type using a type parameter T, with a where constraint that T implements IComparable<T> and the CompareTo method.
Build a generic selection sort method that can sort any type of array by using a type parameter T constrained to IComparable<T>, and demonstrate it with integer and string arrays.
implement the icomparable interface on a custom class by defining how two objects compare using age, enabling generic methods like equals and sort to work with the type.
Develop a custom generic list class using a type parameter T, with a private items array, a count property, and an Add method that doubles capacity and copies items.
Explore implementing an indexer for a generic list using this, with get and set, to access the item at this integer index from the items array.
Overload the addition operator for generic lists in c-sharp to add corresponding elements, enforce equal lengths, and return a new list, using dynamic casts and overriding ToString for display.
Learn delegates and lambda expressions to write inline conditions in a single line, replacing multiple methods. See less than five and equals lambdas in action for simple inline logic.
Learn how delegate chaining combines multiple methods with the same signature, add and remove methods, inspect the invocation list, and prepare for event-driven patterns.
Explore chaining delegates with returning methods and capture all returns by iterating the invocation list, using dynamic invoke or LINQ with lambdas to collect booleans.
Create a public static generic method that uses GetInvocationList to catch all results from delegate chain, optionally passes a parameter, dynamically invokes each delegate, casts to T, and returns List<T>.
Learn how built-in func and action simplify delegates, matching signatures and enabling lambdas, with func returning bool for string input and action handling void methods.
Explore anonymous methods and lambda expressions in C# by using func and action delegates to evaluate conditions, perform operations, and print results.
Create a func delegate that takes a string array and a filter delegate, returning a list of strings using an anonymous method and lambda filters.
Explore how events decouple objects using a publisher that fires, with subscribers responding, as in a button click or soldiers taking cover from gunfire.
Publish an event in C# by creating a shooter class that raises a killing completed event via a delegate and event args, then subscribe handlers to update the score.
Learn to pass extra data with events by using a custom event args class, cast sender to shooter to access its name, and include time of kill.
Replace delegates with the event handler class, using angle brackets for custom event arcs and a publisher-subscriber workflow. Invoke the event with the question mark syntax when subscribers exist.
Learn asynchronous programming with tasks and running long operations in the background using Task, Task.Factory, and Task.Run. Use Wait to synchronize and show in-progress and completed status.
Learn how to run methods with arguments asynchronously using the task class, using lambda expressions and anonymous methods to pass input parameters like a character and a count.
Learn how to convert a method that returns a string for asynchronous use into a Task<string>, and access the output with the Result property to measure its length.
Discover how async and await convert a string-returning method to task<string>, awaiting the result to simplify code with syntactic sugar while preserving the same execution.
Split the existing method into synchronous and asynchronous versions to offer both options. Refactoring introduces a new concatenate chars async method, complete with task-based execution and proper async usage.
The course will lay out the founding ideas of some of the more advanced C# topics for you in a way that makes them easier to understand.
The course is aimed at students that have some coding experience in general and with C# in particular, as well as some Object Oriented Programming experience. Not all topics require OOP knowledge, but it will be easier for you to understand those that do.
The topics that we are covering are:
There are tons and tons of tutorials on Youtube and other websites, so why would you have to pay for this course?
The answer is very simple, in this course you will get every single lecture systemized in such way, that it ensures smooth transition between the previous and the following topic. Guaranteeing great learning experience.
There are no stones left unturned, everything is explained in great detail (but not too much, that would be boring :) )
The video lectures in the course are produced with the highest possible audio and video quality. No static noises to disturb you while you watch the videos, no blurry images, everything is crystal clear with crisp audio!