Language-Integrated Query (LINQ) is a powerful feature in C# that enables developers to query and manipulate data using a syntax similar to SQL.
LINQ makes code more expressive, readable, and less error-prone. In this blog post, we'll explore some common LINQ operations using concise C# code snippets.
LINQ makes code more expressive, readable, and less error-prone. In this blog post, we'll explore some common LINQ operations using concise C# code snippets.
Filtering Data with Where
List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; var evenNumbers = numbers.Where(n => n % 2 == 0);Here, Where filters the elements of the collection based on a specified condition, returning only the even numbers.
Projecting Data with Select
List<string> names = new List<string> { "Alice", "Bob", "Charlie", "David" }; var nameLengths = names.Select(name => name.Length);The Select operation projects each element of the collection into a new form. In this case, it returns the lengths of the names.
Sorting Data with OrderBy
List<string> fruits = new List<string> { "Apple", "Orange", "Banana", "Grapes" }; var sortedFruits = fruits.OrderBy(fruit => fruit);Using OrderBy, you can sort elements of the collection in ascending order based on a specified key.
Aggregating Data with Aggregate
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 }; var sum = numbers.Aggregate((acc, num) => acc + num);Aggregate performs a cumulative computation on each element of the collection, here calculating the sum of all numbers.
Joining Data with Join
List<Student> students = GetStudents(); List<Course> courses = GetCourses(); var studentCoursePairs = students .Join(courses, student => student.CourseId, course => course.Id, (student, course) => new { student.Name, CourseName = course.Name });The Join operation combines two collections based on a common key, creating pairs of related elements.
Grouping Data with GroupBy
List<Student> students = GetStudents(); var groupedByGrade = students.GroupBy(student => student.Grade);GroupBy organizes elements of a collection into groups based on a specified key. Here, students are grouped by their grades.
Querying with First and FirstOrDefault
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 }; var firstNumber = numbers.First(); // Throws an exception if the collection is empty var firstOrDefaultNumber = numbers.FirstOrDefault(); // Returns the default value if the collection is emptyFirst returns the first element of a collection, and FirstOrDefault returns the default value if the collection is empty.
Chaining Operations
List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; var result = numbers .Where(n => n % 2 == 0) .OrderByDescending(n => n) .Select(n => n * 2) .ToList();LINQ allows chaining multiple operations together, creating a pipeline of transformations.
Conclusion
In just a handful of examples, we've scratched the surface of LINQ's capabilities. Whether you're working with collections, databases, or other data sources, LINQ provides a versatile and expressive toolset. Mastering LINQ can greatly enhance your C# coding experience, making your code more concise and maintainable.
Happy querying!
Comments
Post a Comment