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 ...
随机推荐
- Java之反射 — 用法及原理
Java之反射 - 用法及原理 定义 Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意方法和属性:这种动态获取信息以及动态调用对象 ...
- 008.CI4框架CodeIgniter, Controller控制器传输参数到View视图
01. 在CI4中输出VIEW视图,并且传入参数,代码如下: <?php namespace App\Controllers; class Home extends BaseController ...
- css3的伪(伪类和伪元素)大合集
本文讲css3的伪,不是讲它有多虚伪,而是说它的伪元素样式.不得不说以前虽知html伪元素,但很少用,后得知借助css3伪元素可以发挥极大的便利.故总结css3的伪如下: CSS中存在一些比较特殊的属 ...
- 读取多张MNIST图片与利用BaseEstimator基类创建分类器
读取多张MNIST图片 在读取多张MNIST图片之前,我们先来看下读取单张图片如何实现 每张数字图片大小都为28 * 28的,需要将数据reshape成28 * 28的,采用最近邻插值,如下 def ...
- redis简单的实现(java)
1.首先新建一个maven项目,在pom.xml中添加依赖 <dependency> <groupId>redis.clients</groupId> <ar ...
- chrome常用参数
chrome禁止本地浏览时加载本地其他文件,可以采用添加启动参数的方式来支持 添加参数为 --allow-file-access-from-files 或者 --disable-web-securit ...
- CodeForces - 862B Mahmoud and Ehab and the bipartiteness(二分图染色)
题意:给定一个n个点的树,该树同时也是一个二分图,问最多能添加多少条边,使添加后的图也是一个二分图. 分析: 1.通过二分图染色,将树中所有节点分成两个集合,大小分别为cnt1和cnt2. 2.两个集 ...
- Gym - 101158C Distribution Center
题意:n个传送带,传送带i运送编号为i的物品,机器人可以负责把传送带i上的物品放到传送带i + 1上,也可以把传送带i + 1上的物品放到传送带i上,机器人分布在传送带上x轴的不同位置,问每个传送带最 ...
- 51nod 1276:岛屿的数量 很好玩的题目
1276 岛屿的数量 题目来源: Codility 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 收藏 取消关注 有N个岛连在一起形成了一个大的岛屿,如果海平 ...
- linux下安装jdk&&Tomcat环境
linux系统 Centos6 下部署应用服务 jdk-1.7 环境安装:(切换到root用户下操作)1. 在 /usr/local 目录下创建jdk7文件 mkdir /usr/local/jdk7 ...