1

 List<Student> list = new List<Student>()
{
new Student(){Name="张同学",Age=,sex="男"},
new Student(){Name="李同学",Age=,sex="男"},
new Student(){Name="王同学",Age=,sex="男"},
new Student(){Name="赵同学",Age=,sex="男"},
};
List<Teacher> list2 = new List<Teacher>()
{
new Teacher(){Name="张老师",Age=,sex="男",position="校长"},
new Teacher(){Name="李老师",Age=,sex="女",position="教导主任"},
new Teacher(){Name="王老师",Age=,sex="男",position="年级主任"},
new Teacher(){Name="赵老师",Age=,sex="女",position="教授"},
};
//多个条件
var a = from m in list
join q in list2
on new { m.Age, Name = m.Name,HAHA = m.sex } equals new { q.Age, Name = q.Name, HAHA = q.sex }
where m.Name != null
select new { m.Name, m.Age };
//一个条件
var b = from m in list
join q in list2 on m.Age equals q.Age
select m;
//类似a
var c = from m in list
join q in list2
on new { m.Age,m.Name} equals new { q.Age,q.Name}
where m.Name != null
select new { m.Name, m.Age };
//查询符合条件a表的数据
var d =
from m in list
join q in list2
on m.Age equals q.Age
select m;
//获取2个表里面的字段
var e =
from m in list
join q in list2
on m.Age equals q.Age
select new RecentInfo()
{
Name = m.Name,
// time = q == null ? null : q.time,
position = q == null ? string.Empty : q.position.ToString()
}; var S = a.ToList();
var S2 = b.ToList();
var S3 = c.ToList();
var S4 = d.ToList();
var S5 = e.ToList(); #region 三张表连表查询
//var query = from m in list
// join q in list2 on m.Age equals q.Age
// join p in list3 on q.Age equals p.Age
// select m.Name;
//var tmp = query.Distinct().AsEnumerable();
//if (tmp != null && tmp.Any())
// return tmp.ToList();
//return new List<string>();
#endregion
// return a.OrderBy(m => m.Name).Skip(pageIndex * pageCount).Take(pageCount).AsEnumerable();//分页

//三张表操作 获取三张表里的字段

 var f =   from a in A
join b in B on a.id equals b.id
join c in C on b.id equals c.id into temp
from t in temp.DefaultIfEmpty()
select new newmodel
{
newmodel.a = a.name,
newmodel.b = b.name,
newmodel.c = t.name
}

或者;

这种方法最后返回的是三个表所有字段用户自己在调用那个位置选择展示数据

 public IEnumerable<T> Get(Func<a类型, b类型, c类型, T> selector)
{
var rec = from a in 表A
join b in 表B on a.字段 equals b.字段
join c in 表C on b.字段 equals c.字段
select selector(a, b, c);
return rec;
}

调用

 var query = Get((a, b, c) => new { id1 = a.id, id2 = b.id, id3 = c.id });

Linq------连表查询的更多相关文章

  1. 探讨mvc下linq多表查询使用viewModel的问题

    最近在开发mvc3的时候发现了一个问题,就是如何在view页面显示多表查询的数据,最简单的办法就是使用viewmodel了,以下本人使用viewmodel来实现多表查询的3中方法, 先贴代码再说: 1 ...

  2. LINQ 联表查询 取count 值

    linq to sql 实现左外部连接:var query=from a in A join b in B on a.ID equals b.aID into ab from a1 in ab.Def ...

  3. ef linq多表查询(三表)

    var ph = (from c in reef.CQICC_CLIENT join v in reef.CQICC_VISIT_CLIENT on c.CLIENT_T_ID equals v.CL ...

  4. LINQ多表查询

    #region Group,Join //只有join,没有into,内联(inner join) //var sql = from c in sdb.Classic // join s in sdb ...

  5. Entity Framework Code First 在Object Join Linq查询时出现全表查询的语句。

    最近一个项目,使用微软的Entity Framework的ORM框架的项目,部署到现场后,出现了系统缓慢,多个客户端的内存溢出崩溃的问题. 打开了SQL Server Profiler(SQL Ser ...

  6. EF中使用linq进行关联查询

    EF使用linq进行多表查询是完全可以的,最后ToList()调用的时候回产生一条分页的sql语句,所以并不是全部查询再分页的.所以不会影响查询的性能 public void TestLinq() { ...

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

    LINQ的书写格式如下: from 临时变量 in 集合对象或数据库对象 where 条件表达式 [order by条件] select 临时变量中被查询的值 [group by 条件] Lambda ...

  8. LINQ to Entities 查询语法

    转自: http://www.cnblogs.com/asingna/archive/2013/01/28/2879595.html 实体框架(Entity Framework )是 ADO.NET  ...

  9. 浅谈sql 、linq、lambda 查询语句的区别

    浅谈sql .linq.lambda 查询语句的区别 LINQ的书写格式如下: from 临时变量 in 集合对象或数据库对象 where 条件表达式 [order by条件] select 临时变量 ...

  10. EF Lambda 多表查询

    using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Mv ...

随机推荐

  1. maven详解之 pom.xml 解释

    <project>:pom.xml的根标签,一个maven项目用一对<peoject></project>标签包裹. <modelVersion>4.0 ...

  2. SpringBoot-属性直接注入

    SpringBoot-属性直接注入 SpringBoot-属性直接注入 上面我们说到,如果公共的属性,我们可以使用Java类加载Properties文件,来达到复用的目的,在SpringBoot中,我 ...

  3. android studio3.1 添加闪屏页面(启动欢迎界面)(例子简单无BUG)

    截图 启动页的 activity_splash.xml  我用了一张图片自己添加吧 <?xml version="1.0" encoding="utf-8" ...

  4. Fréchet Inception Distance(FID)

    计算 IS 时只考虑了生成样本,没有考虑真实数据,即 IS 无法反映真实数据和样本之间的距离,IS 判断数据真实性的依据,源于 Inception V3 的训练集 ------ ImageNet,在 ...

  5. C# Winform使用线程,委托定时更新界面UI控件,解决界面卡顿问题(转载)

    一.定时执行主界面控件值 1.利用定时器 Thread t = null; private void InitTSJK() { t = new Thread(new ThreadStart(GetDa ...

  6. BBS那些事儿

    目录 1 注册 2 登陆 3 图片验证码相关 4 首页相关,Django Admin后台录入数据 5 注销功能 6 修改密码 7 用户头像展示,media配置 8 个人站点,个人侧边栏 9 侧边栏筛选 ...

  7. redis改配置

    命令行: 暂时生效,适合于做测试,或者线上马上服务修改,重启失效 CONFIG set stop-writes-on-bgsave-error no OK CONFIG get stop-writes ...

  8. HihoCoder第十二周:刷油漆

    #1055 : 刷油漆 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 上回说到,小Ho有着一棵灰常好玩的树玩具!这棵树玩具是由N个小球和N-1根木棍拼凑而成,这N个小球 ...

  9. 126-PHP类__get()魔术方法

    <?php class ren{ //定义人类 //定义成员属性 private $name='Tom'; private $age=15; //定义__get()魔术方法 public fun ...

  10. 复选框全选、反选及根据值JS控制复选框默认选中事件

    HTML代码 <div class="col-sm-7"> <input type="checkbox" id="allAndNot ...