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. Vue 使用$createElement自定义文本

    有时候弹窗或者一些特殊的区域需要自定义一些html元素来显示(snabbdom) const h = this.$createElement this.$msgbox({ title: '提示', m ...

  2. JavaScript async/await 基础知识

    async 作用: async函数返回一个 Promise对象,无论内部有没有await关键字. await 作用: await等待的是一个表达式,这个表达式的计算结果是 Promise 对象 或者是 ...

  3. Hydra's plan

    省选前的计划,实时更新(不知道能不能把挖的坑填完呢qwq) 链接

  4. BufferedReader、BufferedWriter读写文件乱码问题:

    代码: text4500.txt文档用text打开(不知道格式): 读取会出现乱码,然后用Notepad++打开换成UTF-8格式的.就可以了

  5. Linux与Windows的区别(后面了解后继续更新)

    1.转自知乎上的@Haoyuan Xing得答案: Linux是一个以开发者为中心的操作系统,Windows是以消费者为中心的操作系统.这是最根本的区别,也是Linux相对于Windows的优势/劣势 ...

  6. 在eclipse中搜索 datasource.xml 文件:

  7. 配置 Eureka Server 集群

    简介 为了使 Eureka Server 实现高可用,我们需要为它配置集群.这样当有一台 Eureka Server 有故障时,集群中的其他 Server 可以进行代替.Eureka 集群之中的 No ...

  8. 数据结构-二叉树(6)哈夫曼树(Huffman树)/最优二叉树

    树的路径长度是从树根到每一个结点的路径长度(经过的边数)之和. n个结点的一般二叉树,为完全二叉树时取最小路径长度PL=0+1+1+2+2+2+2+… 带权路径长度=根结点到任意结点的路径长度*该结点 ...

  9. Leetcode 24. Swap Nodes in Pairs(详细图解一看就会)

    题目内容 Given a linked list, swap every two adjacent nodes and return its head. You may not modify the ...

  10. 焦大:SEO重思录(上)收录量和收录率的重新定位

    http://www.wocaoseo.com/thread-198-1-1.html 前一段焦大在seo前线就看到有人问为何我收录量很大但是流量很低呢?有时候几百万的收录量但是流量却只有1000不到 ...