LINQ (Language-Integrated Query) is a powerful feature in C# that allows developers to write expressive and concise queries for data manipulation. One interesting aspect of LINQ is the into
clause, which is often used in conjunction with the join
keyword. In this blog post, we’ll explore the usage of the into
clause with a practical example.
Background
Consider a scenario where you have two collections: students
and departments
. Each student is associated with a department through a DepartmentId
. The goal is to retrieve the names of students who belong to the “Computer Science” department. This is where the into
clause comes into play.
Example Data
Let’s start by defining our sample data:
List<Student> students = new List<Student>
{
new Student { Id = 1, Name = "John", DepartmentId = 101 },
new Student { Id = 2, Name = "Jane", DepartmentId = 102 },
new Student { Id = 3, Name = "Bob", DepartmentId = 101 }
};
List<Department> departments = new List<Department>
{
new Department { Id = 101, Name = "Computer Science" },
new Department { Id = 102, Name = "Mathematics" }
};
LINQ Query with join
and into
Now, let’s construct a LINQ query to achieve our goal:
var query = from student in students
join department in departments on student.DepartmentId equals department.Id
select new
{
StudentName = student.Name,
DepartmentName = department.Name
} into studentDept // The into clause creates a temporary variable
where studentDept.DepartmentName == "Computer Science"
select studentDept;
Let’s break down the components of this query:
-
join
Clause: Combines elements fromstudents
anddepartments
based on the equality ofDepartmentId
andId
. -
select
Clause: Creates a new anonymous type with propertiesStudentName
andDepartmentName
from the joined elements. -
into
Clause: Creates a temporary variable (studentDept
) to hold the results of thejoin
clause. -
where
Clause: Filters the results based on the condition thatDepartmentName
should be “Computer Science.”
Displaying Results
Finally, let’s display the results:
foreach (var result in query)
{
Console.WriteLine($"Student: {result.StudentName}, Department: {result.DepartmentName}");
}
This loop iterates through the results of the LINQ query and prints the student names and department names for those students who belong to the “Computer Science” department.
Conclusion
The into
clause in LINQ is a powerful tool that allows developers to create more complex queries by introducing a temporary variable. In this example, we used it to filter and select specific data from joined collections. Understanding the nuances of LINQ can greatly enhance your ability to manipulate data in a concise and readable manner.