博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LINQ的左连接、右连接、内连接和Lamda表达式实现Left join
阅读量:5272 次
发布时间:2019-06-14

本文共 1433 字,大约阅读时间需要 4 分钟。

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{        ///         /// 玩家名称        ///         public string PlayerName { get; set; }        ///         /// 玩家账号        ///         public string Account { get; set; }        ///         /// 注册时间        ///         public DateTime RegTime { get; set; }        ///         /// 充值总数        ///         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 });

 

转载于:https://www.cnblogs.com/shiyh/p/6701839.html

你可能感兴趣的文章
P1192-台阶问题
查看>>
Java大数——a^b + b^a
查看>>
简单的数据库操作
查看>>
帧的最小长度 CSMA/CD
查看>>
树状数组及其他特别简单的扩展
查看>>
普通求素数和线性筛素数
查看>>
PHP截取中英文混合字符
查看>>
电子眼抓拍大解密
查看>>
51nod1076 (边双连通)
查看>>
Linux pipe函数
查看>>
java equals 小记
查看>>
2019春 软件工程实践 助教总结
查看>>
Zerver是一个C#开发的Nginx+PHP+Mysql+memcached+redis绿色集成开发环境
查看>>
程序的静态链接,动态链接和装载 (补充)
查看>>
关于本博客说明
查看>>
[Kaggle] Sentiment Analysis on Movie Reviews
查看>>
价值观
查看>>
mongodb命令----批量更改文档字段名
查看>>
国外常见互联网盈利创新模式
查看>>
android:scaleType属性
查看>>