lambda left join .DefaultIfEmpty

我们知道lambda表达式在Linq to sql 和 Entity framework 中使用join函数可以实现inner join,那么怎么才能在lambda表达式中实现left join呢?秘诀就是在join后面加上一个函数DefaultIfEmpty函数,实际上这个函数在linq中貌似也只有将inner join转换为 left join的作用,示例如下

var joinResult = DB.Table1s.Join(DB.Table2s, a => a.id, b => b.id, (a, b) => new {a,b} ).DefaultIfEmpty(); 

这样返回的joinResult就包含DB.Table1s left join DB.Table2s的结果了。如果要实现right join将DB.Table1s和DB.Table2s的位置返过来即可,但是目前似乎在linq lambda表达式中没有很好的办法实现full outer join,如果真的用到了full outer join还是老老实实在数据库写视图或者存储过程等吧。。。

时间: 2024-10-12 09:43:05

lambda left join .DefaultIfEmpty的相关文章

Linq之Lambda表达式

一 什么是LINQ? ? LINQ即Language Integrated Query(语言集成查询),LINQ是集成到C#和Visual Basic.NET这些语言中用于提供查询数据能力的一个新特性. 二 简单的Linq例子.(简单形式我就不介绍了,主要以Lambda形式介绍). 1  首先创建一个实体对象类并赋值. public class Person { public int PId { get; set; } //自增ID public string Name { get; set;

Linq表连接大全(INNER JOIN、LEFT OUTER JOIN、RIGHT OUTER JOIN、FULL OUTER JOIN、CROSS JOIN)

转载http://www.cnblogs.com/shenqiboy/p/3260105.html 我们知道在SQL中一共有五种JOIN操作:INNER JOIN.LEFT OUTER JOIN.RIGHT OUTER JOIN.FULL OUTER JOIN.CROSS JOIN        内连接.Sql: SELECT [t0].[GroupName], [t1].[UserName] FROM [Group] AS [t0] INNER JOIN [User] AS [t1] ON (

sql 、linq、lambda 查询语句的区别

LINQ的书写格式如下: from 临时变量 in 集合对象或数据库对象 where 条件表达式 [order by条件] select 临时变量中被查询的值 [group by 条件] Lambda表达式的书写格式如下: (参数列表) => 表达式或者语句块 其中: 参数个数:可以有多个参数,一个参数,或者无参数. 参数类型:可以隐式或者显式定义. 表达式或者语句块:这部分就是我们平常写函数的实现部分(函数体). 1.查询全部 实例 Code 查询Student表的所有记录. select *

python 中join()函数strip() 函数和 split() 函数的详解及实例

1.join()函数 Python中有join()和os.path.join()两个函数,具体作用如下: join():                连接字符串数组.将字符串.元组.列表中的元素以指定的字符(分隔符)连接生成一个新的字符串 语法:  'sep'.join(seq) 参数说明sep:分隔符.可以为空seq:要连接的元素序列.字符串.元组.字典上面的语法即:以sep作为分隔符,将seq所有的元素合并成一个新的字符串 返回值:返回一个以分隔符sep连接各个元素后生成的字符串 os.p

python之lambda,filter,map,reduce函数

g = lambda x:x+1 看一下执行的结果: g(1) >>>2 g(2) >>>3 当然,你也可以这样使用: lambda x:x+1(1) >>>2 可以这样认为,lambda作为一个表达式,定义了一个匿名函数,上例的代码x为入口参数,x+1为函数体,用函数来表示为: def g(x): return x+1 非常容易理解,在这里lambda简化了函数定义的书写形式.是代码更为简洁,但是使用函数的定义方式更为直观,易理解. Python中,

通过16道练习学习Linq和Lambda

1. 查询Student表中的所有记录的Sname.Ssex和Class列.select sname,ssex,class from studentLinq:    from s in Students    select new {        s.SNAME,        s.SSEX,        s.CLASS    }Lambda:    Students.Select( s => new {        SNAME = s.SNAME,SSEX = s.SSEX,CLASS 

python lambda 函数 学习

lambda 函数,跟普通函数类似,使用方法是一样的,可以用于定义简单的函数. 介绍: >>> def f(x): ... return x*2 ... >>> f(3) 6 >>> g = lambda x: x*2 >>> g(3) 6 >>> (lambda x: x*2)(3) 6 再看一个稍微复杂点例子: processFunc = collapse and (lambda s: " "

LINQ To SQL && Lambda 使用方法小结 (转)

1. 查询Student表中的所有记录的Sname.Ssex和Class列.select sname,ssex,class from studentLinq: from s in Students    select new {        s.SNAME,        s.SSEX,        s.CLASS    } Lambda: Students.Select( s => new {        SNAME = s.SNAME,SSEX = s.SSEX,CLASS = s.C

SQL、LINQ、Lambda 三种用法(转)

SQL.LINQ.Lambda 三种用法 颜色注释: SQL LinqToSql Lambda QA 1. 查询Student表中的所有记录的Sname.Ssex和Class列. select sname,ssex,class from student Linq: from s in Students select new { s.SNAME, s.SSEX, s.CLASS } Lambda: Students.Select( s => new { SNAME = s.SNAME,SSEX =