EF 多种查询方式
比较常用的查询方式linq to entity,这里先看一种写法:
var query = (from d in testContext.Set<DepartPerson>()
//查询和sql很像,不过这里注意,查询多条件不是and
where == && == && ==
select new Dep_Person
{
Name = p.Name,
ID = p.ID
}).ToList()
当然还有另外一种写法,改用lambda表达式查询:
var personIDList = testContext.Set<Person>().Where(p=>p.Name=="张三").Select(d=>new {ID=d.ID,Name=d.ID}).ToList();
实际应用中我们经常会碰到多表关联查询,以及多条件查询,下面看一下代码 怎么写:
var query = (from d in testContext.Set<DepartPerson>()
join p in testContext.Set<Person>()
on new { id = d.PersonID, hosID = d.HospitalID } equals new { id = p.ID, hosID = "" }
where == && == && ==
select new Dep_Person
{
Name = p.Name,
ID = p.ID,
DepID = d.ID,
HosID = d.HospitalID }).ToList();
实际上也可以用lambda表达式
var personIDList = testContext.Set<Person>().Where(p=>p.Name=="张三").Select(d=>new {ID=d.ID,Name=d.ID}).ToList();
var list = testContext.Set<DepartPerson>().Where(d => personIDList.Contains(d.PersonID)).ToList();
还有一些操作,orderby 和groupby 这些和sql语句的很像,也容易理解,不再多说,这里说一下去重,官方提供的去重方法Distinct()是针对所有列去重,但是很多时候,如果我们想针对某一列去重,应该怎么做呢
方法一:利用groupby
var list = query.ToList().GroupBy(c => c.Name).Select(x => x.First()).ToList();
方法二:实现第三方扩展
public static IEnumerable<TSource> DistinctBy<TSource, TKey>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector)
{ HashSet<TKey> seenKeys = new HashSet<TKey>();
foreach (TSource element in source)
{
if (seenKeys.Add(keySelector(element)))
{
yield return element;
}
}
}
方法二使用也很简单
var query = (from d in testContext.Set<DepartPerson>()
join p in testContext.Set<Person>()
on new { id = d.PersonID, hosID = d.HospitalID } equals new { id = p.ID, hosID = "" }
where == && == && ==
select new Dep_Person
{
Name = p.Name,
ID = p.ID,
DepID = d.ID,
HosID = d.HospitalID }).DistinctByAll(c=>c.Name).ToList();
掌握了这些方法,日常得查询业务需求应该能满足了,当然如果你自己想自定义sql查询(拼接sql语句)可以这么做
List<Dep_Person> peopleViews = testContext.Database.SqlQuery<Dep_Person>("SELECT Name, ID FROM Person").ToList();
这种方法注意的是,加入参数最好是格式化参数,不要直接拼接,以防sql注入
EF 多种查询方式的更多相关文章
- Elasticsearch学习之多种查询方式
1. query string search 搜索全部商品:GET /ecommerce/product/_search took:耗费了几毫秒 timed_out:是否超时,这里是没有 _shard ...
- EF数据Linq方式查询
using (var ctx = new NorthwindEntities()) { //单表查询SQL查询方式 //SELECT * FROM Customers AS c WHERE c.Cit ...
- EF联合查询,如何设置条件过滤从表数据
最近在使用EF进行联合查询过程中,遇到了一件不开心的事情. 已禁用懒加载 var post = await _repository.GetMyPostById(blogId, postId).AsNo ...
- IBatis.Net学习笔记五--常用的查询方式
在项目开发过程中,查询占了很大的一个比重,一个框架的好坏也很多程度上取决于查询的灵活性和效率.在IBatis.Net中提供了方便的数据库查询方式. 在Dao代码部分主要有两种方式:1.查询结果为一个对 ...
- 匿名类型 使用泛型T linq返回dynamic类型的匿名实体 如何把匿名类型.GetType()返回的对象传进泛型里面 EF实体查询出的数据List<T>转DataTable出现【DataSet 不支持 System.Nullable<>】的问题
[100分]紧急求助:LinQ下使用IQueryable<T>如何将返回类型<T>使用匿名类型 问题描述如下:我有一个方法如下:public IQueryable Dissen ...
- mysql笔试题大餐---1、组合查询方式及having
mysql笔试题大餐---1.组合查询方式及having 一.总结 一句话总结: 实践:我之前的mysql真的学的太浅了,这种情况下,依据实践(做题)才是唯一能把它学好的方式 学的暂时够了,以实践而学 ...
- C#高性能TCP服务的多种实现方式
哎~~ 想想大部分园友应该对 "高性能" 字样更感兴趣,为了吸引眼球所以标题中一定要突出,其实我更喜欢的标题是<猴赛雷,C#编写TCP服务的花样姿势!>. 本篇文章的主 ...
- C#开发微信门户及应用(11)--微信菜单的多种表现方式介绍
在前面一系列文章中,我们可以看到微信自定义菜单的重要性,可以说微信公众号账号中,菜单是用户的第一印象,我们要规划好这些菜单的内容,布局等信息.根据微信菜单的定义,我们可以看到,一般菜单主要分为两种,一 ...
- Hibernate 查询方式(HQL/QBC/QBE)汇总
作为老牌的 ORM 框架,Hibernate 在推动数据库持久化层所做出的贡献有目共睹. 它所提供的数据查询方式也越来越丰富,从 SQL 到自创的 HQL,再到面向对象的标准化查询. 虽然查询方式有点 ...
随机推荐
- 小型Http服务器
HTTP又叫做超文本传输协议,现如今用的最多的版本是1.1版本.HTTP有如下的特点: 支持客户/服务器模式(C/S或B/S) 简单快速:基于请求和响应,请求只需传送请求方法和请求路径 灵活:HTTP ...
- Tomcat几种出错方法
1. Several ports (8005, 8089, 8009) required by Tomcat v8.0 Server at localhost are already in use. ...
- CentOS7搭建FastDFS V5.11分布式文件系统-第二篇
1.CentOS7 FastDFS搭建 前面已下载好了要用到的工具集,下面就可以开始安装了: 如果安装过程中出现问题,可以下载我提供的,当前测试可以通过的工具包: 点这里点这里 1.1 安装libfa ...
- python3 内置函数详解
内置函数详解 abs(x) 返回数字的绝对值,参数可以是整数或浮点数,如果参数是复数,则返回其大小. # 如果参数是复数,则返回其大小. >>> abs(-25) 25 >&g ...
- POJ 1046
#include<iostream> using namespace std; #define MAXN 16 #define inf 100000000 struct node { in ...
- rabbitmq系列二 之工作队列
---恢复内容开始--- 1.工作队列的简介 在上一篇中,我们已经写了一个从已知队列中发送和获取消息的程序,在这里,我们创建一个工作队列(work queue), 会发送一些耗时的任务给多个工作者.模 ...
- C语言初学
输出控制符 输出控制符 含义 %d int 整型数 %ld long int %c char 一个字符 %f float 浮点数,整数/整数=整数,整数/小数=小数 %lf double %x %X ...
- PHP PSR 标准
引用他人文章:http://www.cnblogs.com/52php/p/5852572.html PHP中PSR-[0-4]代码规范 PHP-FIG 在说啥是PSR-[0-4]规范的之前,我觉得我 ...
- java将System.out.println的输出导出到文件中
直接看代码 public static void saveStreamToFile(String savePath,String input){ try { //savePath like c:/lo ...
- Shiro的Filter机制详解---源码分析
Shiro的Filter机制详解 首先从spring-shiro.xml的filter配置说起,先回答两个问题: 1, 为什么相同url规则,后面定义的会覆盖前面定义的(执行的时候只执行最后一个). ...