Linq------连表查询
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------连表查询的更多相关文章
- 探讨mvc下linq多表查询使用viewModel的问题
		
最近在开发mvc3的时候发现了一个问题,就是如何在view页面显示多表查询的数据,最简单的办法就是使用viewmodel了,以下本人使用viewmodel来实现多表查询的3中方法, 先贴代码再说: 1 ...
 - 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 ...
 - 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 ...
 - LINQ多表查询
		
#region Group,Join //只有join,没有into,内联(inner join) //var sql = from c in sdb.Classic // join s in sdb ...
 - Entity Framework Code First 在Object Join Linq查询时出现全表查询的语句。
		
最近一个项目,使用微软的Entity Framework的ORM框架的项目,部署到现场后,出现了系统缓慢,多个客户端的内存溢出崩溃的问题. 打开了SQL Server Profiler(SQL Ser ...
 - EF中使用linq进行关联查询
		
EF使用linq进行多表查询是完全可以的,最后ToList()调用的时候回产生一条分页的sql语句,所以并不是全部查询再分页的.所以不会影响查询的性能 public void TestLinq() { ...
 - sql 、linq、lambda 查询语句的区别
		
LINQ的书写格式如下: from 临时变量 in 集合对象或数据库对象 where 条件表达式 [order by条件] select 临时变量中被查询的值 [group by 条件] Lambda ...
 - LINQ to Entities 查询语法
		
转自: http://www.cnblogs.com/asingna/archive/2013/01/28/2879595.html 实体框架(Entity Framework )是 ADO.NET ...
 - 浅谈sql 、linq、lambda 查询语句的区别
		
浅谈sql .linq.lambda 查询语句的区别 LINQ的书写格式如下: from 临时变量 in 集合对象或数据库对象 where 条件表达式 [order by条件] select 临时变量 ...
 - EF   Lambda 多表查询
		
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Mv ...
 
随机推荐
- Element-UI Table 实现筛选数据功能
			
最近产品提出了一个筛选数据的功能,要求在表头里实现一个下拉框进行筛选. 首先, Element-ui 的官方文档,el-table-column 下有一个 filters , 用于数据的筛选和过滤, ...
 - eshop7-mysql
			
1. Mysql 安装 执行 yum -y install mysql-server 注意:(1)是否使用sudo 权限执行请根据您具体环境来决定 (2)检查是否已经安装mysql-server rp ...
 - 【LOJ3043】「ZJOI2019」线段树
			
题面 问题可以转化为每次区间覆盖操作有 \(\frac{1}{2}\) 的概率进行,求标记和的期望.于是我们只要求出所有点有标记的概率即可. 我们设 \(f_i\) 表示节点 \(i\) 有标记的概率 ...
 - 软件管理-RPM命令管理:安装升级与卸载
			
1.包名与包全名 包名 : 操作已经安装的软件包时,使用包名:系统会搜索var/lib/rpm中的数据库 包全名: 操作的包时没有安装的软件包时,使用包全名,而且注意路径 2.RPM安装 切换到光盘p ...
 - POJ 3692:Kindergarten 求补图的最大点独立集 头一次接触这样的做法
			
Kindergarten Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 5884 Accepted: 2877 Desc ...
 - Elasticsearch 删除文档
			
章节 Elasticsearch 基本概念 Elasticsearch 安装 Elasticsearch 使用集群 Elasticsearch 健康检查 Elasticsearch 列出索引 Elas ...
 - java基础源码 (4)--reflect包-AnnotatedElement接口
			
接口:AnnotatedElement * Represents an annotated element of the program currently running in this * VM. ...
 - Ubuntu Vi指令
			
Ubuntu在不更新源的情况下是没办法使用Vim指令的只能使用Vi指令 所有我也就记录了下来 vi / vim命令: 插入内容: i: 插入光标前一个字符 I: 插入行首 a: 插入光标后一个字符 A ...
 - VM虚拟机安装 常用Linux命令  网卡配置 (第二天)
			
VM虚拟机安装:(昨天已经安装好了VM了,按照提示安装就好,很简单) 1.安装centos7虚拟机,现在磁盘里面新建文件夹作为安装文件夹 2.找到centos7的iso文件,打开vm-新建虚拟机-按照 ...
 - SpringBoot Application事件监听
			
SpringBoot Application共支持6种事件监听,按顺序分别是: ApplicationStartingEvent:在Spring最开始启动的时候触发 ApplicationEnviro ...