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. json 说明书

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. 易于人阅读和编写.同时也易于机器解析和生成. 它基于JavaScript Programming Lan ...

  2. UML类图关系大全-转

    1.关联 双向关联: C1-C2:指双方都知道对方的存在,都可以调用对方的公共属性和方法. 在GOF的设计模式书上是这样描述的:虽然在分析阶段这种关系是适用的,但我们觉得它对于描述设计模式内的类关系来 ...

  3. java连接sqlserver2008报错 java.sql.SQLException: 对象名 '表名' 无效.

    注意:c3p0的数据库配置方式为: <named-config name="sqlsvr"> <property name="driverClass&q ...

  4. 如何在Eclipse中配置Tomcat服务器

    之前使用MyEclipse来开发Web应用,可以在MyEclipse中配置服务器,配置完后,直接运行服务器即可,很方便. 最近切换到Eclipse开发环境,发现使用Tomcat的方式不太一样,因此在此 ...

  5. switch..case函数的基础使用一

    基本作用:switch中的参数与case的值进行比对,相等则进入case. JDK1.7 switch支持int.Integer.String类型 package com.my.test; impor ...

  6. win下Maven安装和基本设置

    注:本文介绍 Windows 平台上 Maven 的安装.Maven 3 需要运行在 JDK1.4 以上的版本上. 非原创:原创地址 http://www.ibm.com/developerworks ...

  7. iOS开发之深入探讨runtime机制02-runtime的简单使用

    runtime机制为我们提供了一系列的方法让我们可以在程序运行时动态修改类.对象中的所有属性.方法. 下面就介绍运行时一种很常见的使用方式,字典转模型.当然,你可能会说,“我用KVO直接 setVal ...

  8. 帝国cms如何调用栏目别名作为分类标题?[!--classname--]标签不能用

    用帝国cms建站安全性和生成速度会比dedecms好些,但ecms有个比较不方便的地方就是后台默认模板栏目那边没有一个seo标题设置的输入框,列表模板用的是[!--pagetitle--]标签,那么分 ...

  9. jquery加入收藏代码

    <html> <head> <script type="text/javascript" src="jquery-1.9.1.js" ...

  10. Openstack Quantum project 更名为 Neuron

    因为与磁带备份厂商Quantum商标冲突: The OpenStack Foundation has changed the name of its networking project from Q ...