Linq连表查询如何实现多表数据关联分析?

2026-04-18 00:591阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计936个文字,预计阅读时间需要4分钟。

Linq连表查询如何实现多表数据关联分析?

前言:本人小白程序员一枚,会点Java也会点.net。最近在公司做项目时,用到Linq进行联表查询。因为好久没用了,有些语法我也记不太清了。既然这样,不妨就学一学!

正文:在数据库中,表与表之间存在着关联关系。一对关系意味着两个表之间有一对一、一对多或多对多的关系。以下是一对关系的示例:

一对关系示例:

表A(主表):学生表

| 学号 | 姓名 | 年龄 |

| --- | --- | --- |

| 1 | 张三 | 20 |

| 2 | 李四 | 22 |

| 3 | 王五 | 23 |

表B(从表):课程表

| 课程编号 | 课程名称 | 学分 |

| --- | --- | --- |

| 101 | 高等数学 | 4 |

| 102 | 大学物理 | 3 |

| 103 | 计算机组成原理 | 4 |

在这个示例中,学生表和课程表存在一对多的关系。一个学生可以学习多门课程,但一门课程只能被一个学生选择。

Linq(Language Integrated Query)是一种用于查询和操作数据源(如数据库、XML、LINQ to Objects等)的编程模式。以下是如何使用Linq进行联表查询的示例:

Linq连表查询如何实现多表数据关联分析?

csharpusing System;using System.Linq;

public class Program{ public static void Main() { // 模拟数据库数据 var students=new List { new Student { 学号=1, 姓名=张三, 年龄=20 }, new Student { 学号=2, 姓名=李四, 年龄=22 }, new Student { 学号=3, 姓名=王五, 年龄=23 } };

var courses=new List { new Course { 课程编号=101, 课程名称=高等数学, 学分=4 }, new Course { 课程编号=102, 课程名称=大学物理, 学分=3 }, new Course { 课程编号=103, 课程名称=计算机组成原理, 学分=4 } };

// 使用Linq进行联表查询 var query=from student in students join course in courses on student.学号 equals course.课程编号 select new { 学生姓名=student.姓名, 课程名称=course.课程名称, 学分=course.学分 };

// 输出查询结果 foreach (var item in query) { Console.WriteLine($学生姓名:{item.学生姓名},课程名称:{item.课程名称},学分:{item.学分}); } }}

public class Student{ public int 学号 { get; set; } public string 姓名 { get; set; } public int 年龄 { get; set; }}

public class Course{ public int 课程编号 { get; set; } public string 课程名称 { get; set; } public int 学分 { get; set; }}

在上面的代码中,我们首先定义了两个类:Student和Course,分别表示学生和课程表。然后,我们模拟了数据库数据,并使用Linq进行联表查询。最后,我们遍历查询结果,并输出每个学生的姓名、课程名称和学分。

前言

本人小白程序员一枚 会点java也会点.net
最近在公司做项目当中用到了linq连表查询 因为好久没用linq了 有些语法我也忘记了
既然不会那就一个字学!

正文

在数据库中 表关系有一对一关系 一对多关系,多对多关系
我的需求是 我需要根据用户的id查询用户收藏的内容

表设计 收藏表

还一个内容表就不展示了 我需要根据用户id查询用户收藏的内容 根据内容id查询收藏的内容

代码实现

/// <summary> /// 根据用户id查询收藏的资源信息 /// </summary> /// <param name="userid"></param> /// <returns></returns> /// <exception cref="NotImplementedException"></exception> public async Task<List<Resource>> GetCollectionResources(Guid userid, int skipCount, int maxResultCount) { var result = from resources in (await GetDbContextAsync()).Resources join cr in (await GetDbContextAsync()).Collections on resources.Id equals cr.ResourcesId where cr.Type == CollectiosTypes.Resource && cr.CreatorId == userid select resources; var list = await result.ToListAsync(); var tolist = await result .OrderByDescending(m => m.CreationTime) .Skip(skipCount) .Take(maxResultCount) .ToListAsync(); return tolist; }

本文共计936个文字,预计阅读时间需要4分钟。

Linq连表查询如何实现多表数据关联分析?

前言:本人小白程序员一枚,会点Java也会点.net。最近在公司做项目时,用到Linq进行联表查询。因为好久没用了,有些语法我也记不太清了。既然这样,不妨就学一学!

正文:在数据库中,表与表之间存在着关联关系。一对关系意味着两个表之间有一对一、一对多或多对多的关系。以下是一对关系的示例:

一对关系示例:

表A(主表):学生表

| 学号 | 姓名 | 年龄 |

| --- | --- | --- |

| 1 | 张三 | 20 |

| 2 | 李四 | 22 |

| 3 | 王五 | 23 |

表B(从表):课程表

| 课程编号 | 课程名称 | 学分 |

| --- | --- | --- |

| 101 | 高等数学 | 4 |

| 102 | 大学物理 | 3 |

| 103 | 计算机组成原理 | 4 |

在这个示例中,学生表和课程表存在一对多的关系。一个学生可以学习多门课程,但一门课程只能被一个学生选择。

Linq(Language Integrated Query)是一种用于查询和操作数据源(如数据库、XML、LINQ to Objects等)的编程模式。以下是如何使用Linq进行联表查询的示例:

Linq连表查询如何实现多表数据关联分析?

csharpusing System;using System.Linq;

public class Program{ public static void Main() { // 模拟数据库数据 var students=new List { new Student { 学号=1, 姓名=张三, 年龄=20 }, new Student { 学号=2, 姓名=李四, 年龄=22 }, new Student { 学号=3, 姓名=王五, 年龄=23 } };

var courses=new List { new Course { 课程编号=101, 课程名称=高等数学, 学分=4 }, new Course { 课程编号=102, 课程名称=大学物理, 学分=3 }, new Course { 课程编号=103, 课程名称=计算机组成原理, 学分=4 } };

// 使用Linq进行联表查询 var query=from student in students join course in courses on student.学号 equals course.课程编号 select new { 学生姓名=student.姓名, 课程名称=course.课程名称, 学分=course.学分 };

// 输出查询结果 foreach (var item in query) { Console.WriteLine($学生姓名:{item.学生姓名},课程名称:{item.课程名称},学分:{item.学分}); } }}

public class Student{ public int 学号 { get; set; } public string 姓名 { get; set; } public int 年龄 { get; set; }}

public class Course{ public int 课程编号 { get; set; } public string 课程名称 { get; set; } public int 学分 { get; set; }}

在上面的代码中,我们首先定义了两个类:Student和Course,分别表示学生和课程表。然后,我们模拟了数据库数据,并使用Linq进行联表查询。最后,我们遍历查询结果,并输出每个学生的姓名、课程名称和学分。

前言

本人小白程序员一枚 会点java也会点.net
最近在公司做项目当中用到了linq连表查询 因为好久没用linq了 有些语法我也忘记了
既然不会那就一个字学!

正文

在数据库中 表关系有一对一关系 一对多关系,多对多关系
我的需求是 我需要根据用户的id查询用户收藏的内容

表设计 收藏表

还一个内容表就不展示了 我需要根据用户id查询用户收藏的内容 根据内容id查询收藏的内容

代码实现

/// <summary> /// 根据用户id查询收藏的资源信息 /// </summary> /// <param name="userid"></param> /// <returns></returns> /// <exception cref="NotImplementedException"></exception> public async Task<List<Resource>> GetCollectionResources(Guid userid, int skipCount, int maxResultCount) { var result = from resources in (await GetDbContextAsync()).Resources join cr in (await GetDbContextAsync()).Collections on resources.Id equals cr.ResourcesId where cr.Type == CollectiosTypes.Resource && cr.CreatorId == userid select resources; var list = await result.ToListAsync(); var tolist = await result .OrderByDescending(m => m.CreationTime) .Skip(skipCount) .Take(maxResultCount) .ToListAsync(); return tolist; }