core的 Linq基本使用,简单模拟数据库多表的左右内连接的测试
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基本使用,简单模拟数据库多表的左右内连接的测试的更多相关文章
- 【MySQL】使用MySQL(连接、选择数据库、显示数据库和表信息)
第3章 使用MySQL 文章目录 第3章 使用MySQL 连接 选择数据库 了解数据库和表 小结 简单记录 - MySQL必知必会 - [英]Ben Forta 将学习如何连接和登录到MySQL,如何 ...
- MVC5+EF6简单实例---以原有SQLServer数据库两表联合查询为例
有二三年没写代码了,**内的工作就是这样,容易废人!看到园子里这么多大侠朝气蓬勃的,我想也要学点东西并和大家分享,共同进步!快乐每一天,进步每一天!言归正传! 通过最近一段时间对MVC5.EF6的学习 ...
- 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/ ...
- MVC 学习(二)之Linq to Sql 简单Demo
Linq to Entities 已经我的一篇博文中阐述了,这里阐述一下简单的Linq to Sql 的增删改查.Linq to sql 与Linq to Entities虽然同属于DataBase- ...
- Objective-C ,ios,iphone开发基础:ios数据库(The SQLite Database),使用终端进行简单的数据库操作
SQLite 是一个轻量级的免费关系数据库.SQLite最初的设计目标是用于嵌入式系统,它占用资源非常少,在嵌入式设备中,只需要几百K的内存就够了,可以在(http://www.sqlite.org ...
- 简单模拟Hibernate的主要功能实现
在学习期间接触到Hibernate框架,这是一款非常优秀的O/R映射框架,大大简化了在开发web项目过程中对数据库的操作.这里就简单模拟其底层的实现. /*******代码部分,及其主要注解***** ...
- [置顶] Objective-C ,ios,iphone开发基础:ios数据库(The SQLite Database),使用终端进行简单的数据库操作
SQLite 是一个轻量级的免费关系数据库.SQLite最初的设计目标是用于嵌入式系统,它占用资源非常少,在嵌入式设备中,只需要几百K的内存就够了,可以在(http://www.sqlite.org ...
- Jquery源码分析与简单模拟实现
前言 最近学习了一下jQuery源码,顺便总结一下,版本:v2.0.3 主要是通过简单模拟实现jQuery的封装/调用.选择器.类级别扩展等.加深对js/Jquery的理解. 正文 先来说问题: 1. ...
- Linq to SQL 简单的增删改操作
Linq to SQL 简单的增删改操作. 新建数据库表tbGuestBook.结构如下: 新建web项目,完成相应的dbml文件.留言页面布局如下 <body> <form id= ...
随机推荐
- 2020-07-09:mysql如何开启慢查询?
福哥答案2020-07-09: 1.参数说明 slow_query_log 慢查询开启状态slow_query_log_file 慢查询日志存放的位置(这个目录需要MySQL的运行帐号的可写权限,一般 ...
- C#LeetCode刷题之#441-排列硬币(Arranging Coins)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3995 访问. 你总共有 n 枚硬币,你需要将它们摆成一个阶梯形状 ...
- Vue 修饰符sync的应用
官方链接 https://cn.vuejs.org/v2/guide/components-custom-events.html#sync-修饰符 这个解释有点不太直观,用代码解释一下 父组件 v-b ...
- SpringBoot整合Spring Security
好好学习,天天向上 本文已收录至我的Github仓库DayDayUP:github.com/RobodLee/DayDayUP,欢迎Star,更多文章请前往:目录导航 前言 Spring Securi ...
- 【工具】OSS阿里云存储服务--超级简单--个人还是觉得Fastdfs好玩
介绍 阿里云对象存储服务(Object Storage Service,简称 OSS)为您提供基于网络的数据存取服务. 使用 OSS,您可以通过网络随时存储和调用包括文本.图片.音频和视频等在内的各种 ...
- 【算法•日更•第四十二期】离散傅里叶变换(DFT)
▎前言 小编相当的菜,这篇博客难度稍高,所以有些可能不会带有证明,博客中更多的是定义. 我们将要学到的东西: 复数 暴力多项式乘法 DFT 当然,小编之前就已经写过一篇博客了,主要讲的就是基础多项式, ...
- Vue3.0数据响应式原理
在vue2版本中响应式使用的是ES5对象的操作,通过遍历对象Object.defineProperty属性值的变化,实现监听数据 在3.0中使用的ES6版本的Proxy代理对象方式来实现数据的监听,省 ...
- 动态数组java实现
数组是一种顺序存储的线性表,所有元素的内存地址是连续的. 动态数组相对于一般数组的优势是可以灵活地添加或删除元素.而一般数组则受限于固定的内存空间.只能有限的添加元素 动态数组(Dynamic Arr ...
- Docker 镜像构建之 docker commit
我们可以通过公共仓库拉取镜像使用,但是,有些时候公共仓库拉取的镜像并不符合我们的需求.尽管已经从繁琐的部署工作中解放出来,但是实际开发时,我们可能希望镜像包含整个项目的完整环境,在其他机器上拉取打包完 ...
- 没想到,Git居然有3种“后悔药”!
没想到,Git居然有后悔药! 你知道Git版本控制系统中都有哪些"后悔药"吗? 本文通过案例讲解git reset . git revert . git checkout在版本控制 ...