Linq连表查询如何实现多表数据关联分析?
- 内容介绍
- 文章标签
- 相关推荐
本文共计936个文字,预计阅读时间需要4分钟。
前言:本人小白程序员一枚,会点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进行联表查询的示例:
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分钟。
前言:本人小白程序员一枚,会点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进行联表查询的示例:
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;
}

