1:先看效果:

2:部分代码截图

3:全部代码

 1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 namespace Redistest02
5 {
6 class Program
7 {
8 static void Main(string[] args)
9 {
10 //Console.WriteLine("Hello DoSubscriberAsync!");
11 //MyRedisHelper.DoSubscriberAsync("myredis").Wait(30);
12 //Console.ReadLine();
13
14 //==================准备模拟两张表的数据
15 var list01 = new List<Student>();//3条数据
16 Enumerable.Range(1, 3).ToList().ForEach(c =>
17 {
18 list01.Add(new Student { id = 11 + c, Name = "qq" + c });
19 });
20
21 var list02 = new List<Student>();//两条数据
22 list02.Add(new Student { id = 12, Name = "qq1" });
23 list02.Add(new Student { id = 13, Name = "qq2" });
24
25 Console.WriteLine("==========左连接==以左边为准=============");
26 //左连接
27 var newlistL = (from q in list01
28 join a in list02
29 on q.id equals a.id into qa
30 from c in qa.DefaultIfEmpty()
31 select new Student
32 {
33 id = c == null ? 0 : c.id,
34 Name = c == null ? "空的" : c.Name
35 }).ToList();
36 newlistL.ForEach(c => Console.WriteLine($"id={c.id},name={c.Name}"));
37
38 //右连接
39 Console.WriteLine("==========右连接===以右边为准============");
40 var newlistR = (from a in list02
41 join q in list01
42 on a.id equals q.id into qa
43 from c in qa.DefaultIfEmpty()
44 select new Student
45 {
46 id = c == null ? 0 : c.id,
47 Name = c == null ? "空的" : c.Name
48 }).ToList();
49 newlistR.ForEach(c => Console.WriteLine($"id={c.id},name={c.Name}"));
50
51 //内连接
52 Console.WriteLine("==========内连接======两边共同的数据=========");
53 var newlistI = (from a in list02
54 join q in list01
55 on a.id equals q.id
56 select new Student
57 {
58 id = q == null ? 0 : q.id,
59 Name = q == null ? "空的" : q.Name
60
61 }).ToList();
62 newlistI.ForEach(c => Console.WriteLine($"id={c.id},name={c.Name}"));
63
64
65 Enumerable.Range(1, 10).ToList().ForEach(c =>
66 {
67 Console.WriteLine(c);
68 });
69 var listdata = Enumerable.Empty<Student>();
70 Console.WriteLine($"listdata的集合对象数据是:{listdata.Count()}个,null就会报错的!");
71 }
72 }
73
74 public class Student
75 {
76 public int id { get; set; }
77 public string Name { get; set; }
78 // public DateTime Birthday { get; set; }
79
80 //public IEnumerable<Student> GetSpectionMenthod
81 //{
82 // get
83 // {
84 // // yield return Enumerable.Empty<Student>().FirstOrDefault();
85 // yield return new Student { };
86 // }
87 }
88
89 }

怎么样,看了之后还是很简单的对吧,嘻嘻!

core的 Linq基本使用,简单模拟数据库多表的左右内连接的测试的更多相关文章

  1. 【MySQL】使用MySQL(连接、选择数据库、显示数据库和表信息)

    第3章 使用MySQL 文章目录 第3章 使用MySQL 连接 选择数据库 了解数据库和表 小结 简单记录 - MySQL必知必会 - [英]Ben Forta 将学习如何连接和登录到MySQL,如何 ...

  2. MVC5+EF6简单实例---以原有SQLServer数据库两表联合查询为例

    有二三年没写代码了,**内的工作就是这样,容易废人!看到园子里这么多大侠朝气蓬勃的,我想也要学点东西并和大家分享,共同进步!快乐每一天,进步每一天!言归正传! 通过最近一段时间对MVC5.EF6的学习 ...

  3. C#7.2——编写安全高效的C#代码 c# 中模拟一个模式匹配及匹配值抽取 走进 LINQ 的世界 移除Excel工作表密码保护小工具含C#源代码 腾讯QQ会员中心g_tk32算法【C#版】

    C#7.2——编写安全高效的C#代码 2018-11-07 18:59 by 沉睡的木木夕, 123 阅读, 0 评论, 收藏, 编辑 原文地址:https://docs.microsoft.com/ ...

  4. MVC 学习(二)之Linq to Sql 简单Demo

    Linq to Entities 已经我的一篇博文中阐述了,这里阐述一下简单的Linq to Sql 的增删改查.Linq to sql 与Linq to Entities虽然同属于DataBase- ...

  5. Objective-C ,ios,iphone开发基础:ios数据库(The SQLite Database),使用终端进行简单的数据库操作

    SQLite  是一个轻量级的免费关系数据库.SQLite最初的设计目标是用于嵌入式系统,它占用资源非常少,在嵌入式设备中,只需要几百K的内存就够了,可以在(http://www.sqlite.org ...

  6. 简单模拟Hibernate的主要功能实现

    在学习期间接触到Hibernate框架,这是一款非常优秀的O/R映射框架,大大简化了在开发web项目过程中对数据库的操作.这里就简单模拟其底层的实现. /*******代码部分,及其主要注解***** ...

  7. [置顶] Objective-C ,ios,iphone开发基础:ios数据库(The SQLite Database),使用终端进行简单的数据库操作

    SQLite  是一个轻量级的免费关系数据库.SQLite最初的设计目标是用于嵌入式系统,它占用资源非常少,在嵌入式设备中,只需要几百K的内存就够了,可以在(http://www.sqlite.org ...

  8. Jquery源码分析与简单模拟实现

    前言 最近学习了一下jQuery源码,顺便总结一下,版本:v2.0.3 主要是通过简单模拟实现jQuery的封装/调用.选择器.类级别扩展等.加深对js/Jquery的理解. 正文 先来说问题: 1. ...

  9. Linq to SQL 简单的增删改操作

    Linq to SQL 简单的增删改操作. 新建数据库表tbGuestBook.结构如下: 新建web项目,完成相应的dbml文件.留言页面布局如下 <body> <form id= ...

随机推荐

  1. Flutter 打包程序 build android apk

    Step-1 Java 路径 找到java路径, 可使用[flutter doctor -v] Step-2: 进入目录 找到路径后 C:\Program Files\Java\jre1.8.0_23 ...

  2. 用python爬虫监控CSDN博客阅读量

    作为一个博客新人,对自己博客的访问量也是很在意的,刚好在学python爬虫,所以正好利用一下,写一个python程序来监控博客文章访问量 效果 代码会自动爬取文章列表,并且获取标题和访问量,写入exc ...

  3. CODING DevOps 微服务项目实战系列第二课来啦!

    近年来,工程项目的结构越来越复杂,需要接入合适的持续集成流水线形式,才能满足更多变的需求,那么如何优雅地使用 CI 能力提升生产效率呢?CODING DevOps 微服务项目实战系列第二课 <D ...

  4. MIT 6.828 | JOS | 关于虚拟空间和物理空间的总结

    Question: 做lab过程中越来越迷糊,为什么一会儿虚拟地址是4G 物理地址也是4G ,那这有什么作用呢? 解决途径: 停下来,根据当前lab的进展,再回头看上学期操作系统的ppt & ...

  5. 幂次方的四种快速取法(不使用pow函数)

    Pow(x, n) 方法一:暴力法 方法二:递归快速幂算法 方法三:迭代快速幂算法 方法四:位运算法 方法一:暴力法 思路 只需模拟将 x 相乘 n 次的过程. 如果 \(n < 0\),我们可 ...

  6. dotnet cli

    前言 dotnet cli (Command-Line Interface) .net 源代码和二进制文件管理工具.需要安装 .NET Core SDK. 终端执行 dotnet --info 可以打 ...

  7. 免费验证码接收网站&不停开小号方法

    手机号注册:免费验证码接收网站 0.http://getfreesmsnumber.com/ 9个外国网站,访问后要快点点击链接,否则2秒会检测出adblocker 1.http://smsrecei ...

  8. 创建SpringMVC项目

    学习SpringMVC框架第一步,先创建一个简单项目,了解流程.使用的是Eclipse+Tomcat9.0 创建项目springmvc 新建Dynamic Web Project File->N ...

  9. 更换IntelliJ Idea的Terminal为git_home/bin/sh.exe命令端程序

    idea中默认的terminal形式: 1.在IDEA中,打开settings,设置相应的bash路径 settings–>Tools–>Terminal–>Shell path:C ...

  10. openVswitch(OVS)源代码分析之工作流程(flow流表查询)

    原文链接: openVswitch(OVS)源代码分析之工作流程(flow流表查询)