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. docker 容器启动时设置环境变量source

    镜像启动时,自动执行的是~/.bashrc文件,所以,环境变量需要配置在该文件内,这样镜像启动时,可自动执行该文件,使环境变量生效. vi  ~/.bashrc ------------------- ...

  2. yum 安装 tomcat

    前言对于一个新安装的 centos 系统来说,是没有 tomcat 服务器的.用下面的命令可以查看 tomcat 服务的状态. systemctl status tomcat.service//或者 ...

  3. oracle进入CDB

    第一步:使用sys登陆 CONN sys/change_on_install AS SYSDBA; 第二步:查看现在的容器名称 SHOW con_name; 第三步:改变容器为PDB ALTER SE ...

  4. kali linux终端快捷键设置

    kali里面是没有终端快捷键的,需要自己设置. 打开设置->设备->keyboard,拉到最下面点击加号来新建一个快捷键. 名称:打开终端 命令:gnome-terminal 快捷键:Ct ...

  5. POJ 1330:Nearest Common Ancestors

    Nearest Common Ancestors Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 20940   Accept ...

  6. 又一个无效的列类型错误Error setting null for parameter #7 with JdbcType NULL . Try setting a different JdbcType for this parameter or a different jdbcTypeForNull configuration property. Cause: java.sql.SQLExcept

    在更新数据时候出现的错误 更新代码如下: <update id="modify" parameterType="Standard"> update ...

  7. 本机无oracle,远程连接

    描述 本机无oracle,通过PLSQL Developer程序,连接虚拟机中的oracle11gR2 1 下载instant-client 需要和服务端版本对应 下载相应的instant-clien ...

  8. JDK源码阅读-------自学笔记(一)(java.lang.Object重写toString源码)

    一.前景提要 Object类中定义有public String toString()方法,其返回值是 String 类型. 二.默认返回组成 类名+@+16进制的hashcode,当使用打印方法打印的 ...

  9. servlet中urlpatterns注意事项

    在servlet中, @WebServlet(urlPatterns="/newsAdd")接收 resp.sendRedirect("/wedding/houtai/N ...

  10. JQuery 多属性选择节点

    JQuery 1.6.0+以后用prop()代替attr(); 多属性选择节点 $("input[type=checkbox][name='first2'][value='first4']& ...