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= ...
随机推荐
- NodeJs nrm 和 nvm
nrm 和 nvm nrm (npm registry manager)是npm的镜像源管理工具 nvm (node version manager)是nodejs的版本管理工具 nrm # nrm ...
- JavaScript 循环数组的时候调用方法中包含Promise的时候如何做到串行
forEach是不能阻塞的, 默认[并行]方式 const list = [1, 2, 3] const square = num => { return new Promise((resolv ...
- drop、truncate、delete功能介绍和三者间区别
一.delete 1.delete是DML,执行delete操作时,每次从表中删除一行,并且同时将该行的的删除操作记录在redo和undo表空间中以便进行回滚(rollback)和重做操作,但要注意表 ...
- 在 Go 语言中,我为什么使用接口
强调一下是我个人的见解以及接口在 Go 语言中的意义. 如果您写代码已经有了一段时间,我可能不需要过多解释接口所带来的好处,但是在深入探讨 Go 语言中的接口前,我想花一两分钟先来简单介绍一下接口. ...
- 面试题-JavaSE语法
1.Java 有没有 goto 语句? goto 是 Java 中的保留字,在目前版本的 Java 中没有使用.根据 James Gosling(Java 之父)编写的<The Java Pr ...
- 手把手教你使用VUE+SpringMVC+Spring+Mybatis+Maven构建属于你自己的电商系统之vue后台前端框架搭建——猿实战01
猿实战是一个原创系列文章,通过实战的方式,采用前后端分离的技术结合SpringMVC Spring Mybatis,手把手教你撸一个完整的电商系统,跟着教程走下来,变身猿人找到工作不是 ...
- golang方法
1.方法声明 在函数声明时,在其名字之前放上一个变量,即是一个方法.这个附加的参数会将该函数附加到这种类型上,即相当于为这种类型定义了一个独占的方法. package main import &quo ...
- 结对项目:四则运算(C语言)
github地址:https://github.com/nilonger/arithmetic 结对伙伴:杨锐龙+黄海钊 一.项目要求 1.1 题目:实现一个自动生成小学四则运算题目的命令行程序(也可 ...
- VMDNAMD命令规则(转载)
输出体系的整个带电量:measure sumweights $all weight charge 给PDB文件设置周期边界条件:pbc set {54 54 24 } -all 将此晶胞内原子脱除周期 ...
- 黑马新版PYTHON教学课程(全)资料加视频完整版百度网盘资料
黑马新版PYTHON教学课程(全)资料加视频完整版 无加密,适合0基础人群.基础班+就业班.不用解压在线看 百度网盘地址一 淘宝店地址二