LINQ的左连接、右连接、内连接和Lamda表达式实现Left join
1、左连接:
var LeftJoin = from t1 in l1
join t2 in l2
on t1.ID equals t2.ID into Joinedt12
from t3 in Joinedt12.DefaultIfEmpty()
select new                        
{
Name = t1.Name,
Age=t2.Age                      
};
2、右连接:
var RightJoin = from t2 in l2
join t1in l1
on t2.ID equals t1.ID into joint12
from t3 in joint12.DefaultIfEmpty()
select new                          
{
Name = t1.Name,
Age=t2.Age  
};
3、内连接:
 var query = from t1 in l1
                 join t2 in l2
                 on t1.ID equals t2.ID
                 select new t3
                 {
                    USER_ID = t1.USER_ID,
                    USER_NAME = t1.USER_NAME,
                    USER_PASSWORD = t1.USER_PASSWORD,
};
注:上例中使用了DefaultIfEmpty操作符,它能够为实序列提供一个默认的元素。DefaultIfEmpty使用了泛型中的default关键字。default关键字对于引用类型将返回null,而对于值类型则返回0。对于结构体类型,则会根据其成员类型将它们相应地初始化为null(引用类型)或0(值类型)
我们可以不使用default关键字,但在要DefaultIfEmpty中给定当空时的默认对象值。
Lamda表达式实现Left join
public class AnalysisPlayer
{
/// <summary>
/// 玩家名称
/// </summary>
public string PlayerName { get; set; }
/// <summary>
/// 玩家账号
/// </summary>
public string Account { get; set; }
/// <summary>
/// 注册时间
/// </summary>
public DateTime RegTime { get; set; }
/// <summary>
/// 充值总数
/// </summary>
public int Points { get; set; }
}
------解决方案--------------------
var query = User.GroupJoin(Charge, u => u.Account, c => c.Account, (u, c) => new { u, c })
.Select(data => new AnalysisPlayer { Account = data.u.Account, PlayerName = data.u.Name,
RegTime = data.u.CreateTime ?? DateTime.Now, Points =data.c==null?0:data.c.Points });
LINQ的左连接、右连接、内连接和Lamda表达式实现Left join的更多相关文章
- PHP左、右、内连接
		left join :左连接,返回左表中所有的记录以及右表中连接字段相等的记录.right join :右连接,返回右表中所有的记录以及左表中连接字段相等的记录.inner join: 内连接,又 ... 
- SQL中的连接可以分为内连接,外连接,以及交叉连接 。
		SQL中的连接可以分为内连接,外连接,以及交叉连接 . 1. 交叉连接CROSS JOIN 如果不带WHERE条件子句,它将会返回被连接的两个表的笛卡尔积,返回结果的行数等于两个表行数的乘积: 举例, ... 
- SQL Server中的连接查询【内连接,左连接,右连接,。。。】
		在查询多个表时,我们经常会用“连接查询”.连接是关系数据库模型的主要特点,也是它区别于其它类型数据库管理系统的一个标志. 什么是连接查询呢? 概念:根据两个表或多个表的列之间的关系,从这些表中查询数据 ... 
- SQL 四种连接查询(内连接、左连接、右连接、全连接)
		下面列出了您可以使用的 JOIN 类型,以及它们之间的差异. (1) JOIN: 如果表中有至少一个匹配,则返回行(inner join) (2) LEFT JOIN: 即使右表中没有 ... 
- 关于数据库的左,右,内,外连接,Union和Union all---------笔记
		1.左连接 select a.filed1,a.filed2,b.filed1 from a (左表) left join b(右表) on a.commonfiled = b.commonfiled ... 
- [原创]java WEB学习笔记91:Hibernate学习之路-- -HQL 迫切左外连接,左外连接,迫切内连接,内连接,关联级别运行时的检索策略 比较。理论,在于理解
		本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ... 
- Hibernate迫切左外连接和迫切内连接
		•迫切左外连接: •LEFT JOIN FETCH 关键字表示迫切左外连接检索策略. –list() 方法返回的集合中存放实体对象的引用, 每个 Department 对象关联的 Employee ... 
- oracle连接总结(内连接、外连接、自然连接,交叉连接,自连接)
		1.简述 1) 两个表的连接,是通过将一个表中的一列或者多列同另一个表中的列链接而建立起来的.用来连接两张表的表达式组成了连接条件.当连接成功后,第二张表中的数据就同第一张表连接起来了,并形成了复合 ... 
- SQL连接方式(内连接,外连接,交叉连接)
		1.内连接.左连接.右连接.全连接介绍 內连接仅选出两张表中互相匹配的记录.因此,这会导致有时我们需要的记录没有包含进来.内部连接是两个表中都必须有连接字段的对应值的记录,数据才能检索出来. 左连 ... 
随机推荐
- NC 的高级应用
			高级用法: (1)作攻击程序用,例子: 格式1:type.exe c:\exploit.txt|nc -nvv 192.168.x.x 80 格式2:nc -nvv 192.168.x.x 80 &l ... 
- Elasticsearch学习之深入聚合分析三---案例实战
			1. 统计指定品牌下每个颜色的销量 任何的聚合,都必须在搜索出来的结果数据中进行,搜索结果,就是聚合分析操作的scope GET /tvs/sales/_search { , "query& ... 
- hdu3507 Print Article[斜率优化dp入门题]
			Print Article Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others)To ... 
- html5media 视频
			官网: https://html5media.info/ 二.引入script <script src="//api.html5media.info/1.1.8/html5media. ... 
- jenkins之另辟蹊径实现根据svn项目实现智能选择
			项目要求,根据svn选择的trunk或branches及tags里的各分支,动态选择参数.一开始认为很简单,直接用jenkins中的List Subversion tags插件及active choi ... 
- 完美解决Android SDK Manager无法更新
			由于国内的各种屏蔽现在Android SDK Manager出现无法更新或更新太慢,如下方法可完美解决此问题 1. 打开..\Android\sdk\SDK Manager.exe 2. 
- 关于python的【if __name__ == "__main__":】
			学习东西真的需要自己动手,然后遇到问题,自己学着去解决.当然如果能得到高人指点,那真是走了八辈子运了.可以节省很多时间.但是大多数情况下,不能总是有高人来指点我们.这时就需要靠我们自己了. 在学习py ... 
- 解决ios safari中按钮圆角问题【原创】
			问题描述 使用html5编写页面在移动app中嵌套,总会涉及到按钮的使用,在android手机浏览器中显示正常,但在ios safari浏览器中会看到按钮显示为圆角样式,设置border-rad ... 
- Docker 学习应用篇三:使用docker搭建的环境,安装thinksns
			Thinksns 是一个开源的社交网站,因为目前的项目需要用到这个,所以就下载一个安装试试看. 之前在windows上用了wamp,安装的很顺利.但是项目是要部署到linux上的.于是我便用了Dock ... 
- hdu5955 Guessing the Dice Roll【AC自动机】【高斯消元】【概率】
			含高斯消元模板 2016沈阳区域赛http://acm.hdu.edu.cn/showproblem.php?pid=5955 Guessing the Dice Roll Time Limit: 2 ... 
