List<ArticleModel> articleList = articleRepository.GetAllArticle();
List<UsersModel> userList = usersRepository.GetAllUsers();

//用户表左连接文章表
var usersLeftJoin = (from u in userList
join a in articleList
on u.Id equals a.Author into users
from us in users.DefaultIfEmpty()
select new
{
author = us == null ? "" : us.Author.ToString(),
name = u.Name.Trim()
}).ToList();

//要避免这种写法,这种写法查出来的数据实际上相当于连接
var usersLeftJoin1 = (from u in userList
join a in articleList
on u.Id equals a.Author into users
from us in users
select new
{
author = us.Author,
name = u.Name.Trim()
}).ToList();

//文章表左连接用户表
var articleLeftJoin = (from a in articleList
join u in userList
on a.Author equals u.Id into users
from us in users.DefaultIfEmpty()
select new
{
title = a.Title.Trim(),
name = us == null ? "" : us.Name.Trim(),
author = a.Author
}).ToList();

//要避免这种写法,这种写法查出来的数据实际上相当于连接
var articleLeftJoin1 = (from a in articleList
join u in userList
on a.Author equals u.Id into users
from us in users
select new
{
name = us.Name.Trim(),
author = a.Author
}).ToList();

//用户表连接文章表
var result = (from a in articleList
from u in userList
where a.Author == u.Id
select new
{
name = u.Name,
author = a.Author
}).ToList();

linq 之左连接的更多相关文章

  1. Linq实现左连接、右连接

    --一本错误的记录 insert into Book values('错误时怎样练成的',111)   --左连接 select s.name,b.name from student as s lef ...

  2. Lambda方式左连接有Linq方式左连接

    网上查到的直接使用Join+DefaultIfEmpty的方式是错误的,实际生成SQL是两表先内联接,然后再LEFT JOIN.经过查证,参考资料,最终得到如下两种方式的左连接写法: public v ...

  3. LINQ的左连接、右连接、内连接

    .左连接: var LeftJoin = from emp in ListOfEmployees join dept in ListOfDepartment on emp.DeptID equals ...

  4. linq实现左连接

    1.左连接: var LeftJoin = from emp in ListOfEmployees join dept in ListOfDepartment on emp.DeptID equals ...

  5. LINQ的左连接、右连接、内连接和Lamda表达式实现Left join

    1.左连接: var LeftJoin = from t1 in l1join t2 in l2on t1.ID equals t2.ID into Joinedt12from t3 in Joine ...

  6. linq的左连接右连接内连接用法

    1.左连接: var LeftJoin = from e in ListOfEmployees join d in ListOfDepartment on e.DeptID equals d.ID i ...

  7. linq之左连接 + group by

    var list = from item in (from s in _sysBll.GetList(s => s.ParamID == "TraSchType" & ...

  8. linq join 左连接 leftjoin 多个on条件 where 条件

    var haveChange = from newScore in newScoreList join oldScore in oldScoreList on new{newScore.ExamId, ...

  9. Linq Left Join;linq左连接 (转载)

    来源 https://www.cnblogs.com/xinjian/archive/2010/11/17/1879959.html 准备一些测试数据,如下: use Test Create tabl ...

随机推荐

  1. Z480联想笔记本突然没有了声音

    这几天笔记本突然没有了声音,重启几次都没有效果. 1.检查了声卡驱动,没有发现问题: 2.检查是否设置了静音,没有问题: 有人说重装驱动,懒得重装,于是下面的一个操作给解决了: 在“设备管理器”中找到 ...

  2. About the Storage allocation

    It doesn't matter what programming language u use,it's all about the usage of variable---storage man ...

  3. sqlserver2008 解决 ldf文件过大的方法

    SQL2008清空删除日志: '在SQL2008中清除日志就必须在简单模式下进行,等清除动作完毕再调回到完全模式. ------------------------------------------ ...

  4. C++文件操作之 seekg/seekp/tellg/tellp

    问题描述: C++文件操作之 tellg/tellp/seekg/seekp 的使用 问题解决: (1)seekg/tellg/seekp/tellp 使用 tellp用于ostream调用,用来&q ...

  5. redis 资料链接

    redis 资料链接  http://blog.nosqlfan.com/html/3537.html

  6. ubuntu下opencv 3.0和python2.7安装测试

    1.安装opencv所需的库(编译器.必须库.可选库) sudo apt-get install build-essential sudo apt-get install cmake git libg ...

  7. sql2008安装时提示重启计算机失败解决方法

    安装sql 2008的时候,在检测安装环境中有一项是”重新启动计算机”显示的结果是“失败”.上网看了半天,找到了解决方案,虽然我没弄明白具体原因,但问题是解决了,解决方案如下: 一.Windows+R ...

  8. Zabbix 集成 OneAlert 实现全方位告警

    1. 前言 告警将重要信息发送给运维「或者其他相关人」,及时发现并且处理问题.在所有开源监控软件里面,Zabbix 的告警方式无疑是最棒的.告警的方式各式各样,从 Email 告警到飞信.139/18 ...

  9. utmp, wtmp, and lastlog 日志清除工具

    utmp, wtmp, and lastlog 日志清除工具 http://blog.itpub.net/83980/viewspace-801664/

  10. PHP中发送邮件的几种方法总结

    1. 使用 mail() 函数 没什么好讲的,就是使用系统自带的smtp系统来发送,一般是使用sendmail来发.这个按照各个系统不同而定.使用参考手册. 2. 使用管道的形式 昨天刚测试成功,使用 ...