在C#开发中,LINQ(Language Integrated Query) 是一个强大的数据查询工具,尤其在处理集合数据时非常高效。其中,Join 操作允许我们将多个集合(如列表、数组或数据库表)进行关联查询,类似于SQL中的 INNER JOIN。本文将围绕 C# LINQ Join多集合查询 这一主题,手把手教你如何使用 LINQ 实现多集合的关联操作,即使是编程新手也能轻松上手。

LINQ 的 Join 方法用于根据两个集合中元素的“键”进行匹配,从而将它们组合成一个新的结果集。这在处理来自不同数据源但存在逻辑关联的数据时非常有用。
例如:你有一个学生列表和一个成绩列表,你想知道每个学生的姓名和对应的成绩,这时就可以使用 Join 将两个列表通过“学号”关联起来。
LINQ Join 的基本语法如下:
var result = from a in collectionA join b in collectionB on a.Key equals b.Key select new { a.Property1, b.Property2 };或者使用方法语法:
var result = collectionA.Join( collectionB, a => a.Key, // 外部集合的键选择器 b => b.Key, // 内部集合的键选择器 (a, b) => new { a.Property1, b.Property2 } // 结果选择器);我们来创建两个类:Student 和 Score,然后用 LINQ Join 把它们关联起来。
public class Student{ public int Id { get; set; } public string Name { get; set; }}public class Score{ public int StudentId { get; set; } public double MathScore { get; set; }}接下来,准备测试数据:
var students = new List<Student>{ new Student { Id = 1, Name = "张三" }, new Student { Id = 2, Name = "李四" }, new Student { Id = 3, Name = "王五" }};var scores = new List<Score>{ new Score { StudentId = 1, MathScore = 95 }, new Score { StudentId = 2, MathScore = 88 }, new Score { StudentId = 4, MathScore = 92 } // 注意:Id=4 的学生不存在};现在使用 LINQ Join 查询:
var query = from s in students join sc in scores on s.Id equals sc.StudentId select new { s.Name, sc.MathScore };// 或者使用方法语法:// var query = students.Join(scores,// student => student.Id,// score => score.StudentId,// (student, score) => new { student.Name, score.MathScore });foreach (var item in query){ Console.WriteLine($"{item.Name}: {item.MathScore}");}输出结果为:
张三: 95李四: 88
注意:王五没有成绩记录,而成绩表中的 StudentId=4 在学生表中不存在,因此这两条数据都不会出现在结果中——这就是典型的 内连接(Inner Join) 行为。
如果你希望保留所有学生(即使没有成绩),可以使用 GroupJoin 配合 SelectMany 来实现左外连接(Left Outer Join):
var leftJoin = from s in students join sc in scores on s.Id equals sc.StudentId into scoreGroup from sg in scoreGroup.DefaultIfEmpty() select new { s.Name, MathScore = sg?.MathScore ?? 0 // 使用空合并运算符 };foreach (var item in leftJoin){ Console.WriteLine($"{item.Name}: {item.MathScore}");}输出结果:
张三: 95李四: 88王五: 0
通过本教程,你已经掌握了 C# LINQ Join多集合查询 的基本用法。无论是使用查询表达式还是方法语法,LINQ 都能让你以声明式的方式优雅地处理多集合关联。
记住以下几点:
Join 默认是内连接,只返回匹配成功的项。GroupJoin 和 DefaultIfEmpty()。Where、OrderBy)组合使用。希望这篇 LINQ关联查询教程 能帮助你快速上手 C# 中的多集合查询。如果你正在学习 C#多表连接查询 或 LINQ小白入门,不妨动手实践一下上面的代码!
本文由主机测评网于2025-12-07发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025124357.html