EF和LINQ改变了原有的手写SQL时期的一些编码方法,并且增强了各数据库之间的移植性简化了开发时的代码量和难度,由于很多人不熟,经常会碰到一些写SQL语句时经常会用到的一些方法,而使用EF或LINQ确不知道如何使用,其实EF和LINQ帮我们想到的有很多,看大家如何利用好,下面讲几个项目开发中碰到过的问题吧

1、经常开发中会碰到查询一个包含在一个数组中的列表
   例如:select * from User where id in(1,2,3,4,5);
   如果在EF中如何查询呢
   int[] list={1,2,3,4,5};//要查询的数组列表
   DBEntities db=new DBEntities();//EF访问数据库的对象
   var ulist=db.User.Where(u=>list.Contains(u.id));
   LINQ
   var ulist=from ul in db.User where list.Contains(ul.id) select ul;
2、如果需要按照数组中的顺序将查询出来的数据排序怎么办

var ulist=db.User.Where(u=>list.Contains(u.id)).ToArray();

   var result=ulist.OrderBy(a=>Array.IndexOf(list,a.id)).ToList();
   LINQ也是一样
   如果一定要在数据库中排序好了再查询出来,也有方法

var ulist=db.User.Where(u=>list.Contains(u.id)).OrderBy(o=>SqlFunctions.CharIndex("1,2,3,4,5",o.id));

怎么样,方便吧
SqlFunctions这个静态类里面提供了很多原生SQL的方法,大家可以进行尝试

EF或LINQ 查询时使用IN并且根据列表自定义排序方法的更多相关文章

  1. [转载]EF或LINQ 查询时使用IN并且根据列表自定义排序方法

    原文地址:EF或LINQ 查询时使用IN并且根据列表自定义排序方法作者:李明川 EF和LINQ改变了原有的手写SQL时期的一些编码方法,并且增强了各数据库之间的移植性简化了开发时的代码量和难度,由于很 ...

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

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

  3. linq查询时查询语句中附带多个查询时“已有打开的与此 Command 相关联的 DataReader,必须首先将它关闭”

    主要原因是因为EF采用的 DataReader来进行数据的存储,此时connection使用的是同一个. 例如: list = _tzNewsService.GetAll().Where(w => ...

  4. Linq EF 根据字符列表排序或List根据列表排序以及Linq查询类型转换

    //model.BBSCategoryIDList=>{10,23,12}或者{1,3,2} //model.BBSCategoryIDs=>1,3,2或者10,23,12 //SqlFu ...

  5. C#基础:LINQ 查询函数整理

    1.LINQ 函数   1.1.查询结果过滤 :where() Enumerable.Where() 是LINQ 中使用最多的函数,大多数都要针对集合对象进行过滤,因此Where()在LINQ 的操作 ...

  6. Entity Framework 6 Recipes 2nd Edition(13-6)译 -> 自动编译的LINQ查询

    问题 你想为多次用到的查询提高性能,而且你不想添加额外的编码或配置. 解决方案 假设你有如Figure 13-8 所示的模型 Figure 13-8. A model with an Associat ...

  7. C#语法之Linq查询基础一

    Linq做.Net开发的应该都用过,有些地方很复杂的逻辑用Linq很方便的解决.对于Linq to object.Linq to xml.Linq to sql.Linq to Entity(EF)都 ...

  8. .NET LINQ查询语法与方法语法

    LINQ 查询语法与方法语法      通过使用 C# 3.0 中引入的声明性查询语法,介绍性 LINQ 文档中的多数查询都被编写为查询表达式. 但是,.NET 公共语言运行时 (CLR) 本身并不具 ...

  9. LINQ之路 5:LINQ查询表达式

    书写LINQ查询时又两种语法可供选择:方法语法(Fluent Syntax)和查询表达式(Query Expression). LINQ方法语法的本质是通过扩展方法和Lambda表达式来创建查询.C# ...

随机推荐

  1. hung_task_timeout_secs和blocked for more than 120 seconds的解决方法

    Linux系统出现hung_task_timeout_secs和blocked for more than 120 seconds的解决方法 Linux系统出现系统没有响应. 在/var/log/me ...

  2. mysql 事务队列 写入 幂等性 重复写入

    mysql  事务队列   写入 幂等性  重复写入

  3. [administrative][archlinux][netctl][wpa_supplicant] 查看WIFI链接信息

    当使用 netctl + wpa_supplicant的时候,环境里同时存在好多个WIFI,而我同时有配置了他们的密钥信息在配置文件中. 那么我该如何查看,我当前链接到了哪个WIFI上? /home/ ...

  4. MyEvent.SetEvent; // 同步信号置位

    MyEvent.SetEvent;   //  同步信号置位 TSimpleEvent.Create = TEvent.Create(nil, True, False, nil)           ...

  5. Python内置模块:random,os,sys,和加密模块hashlib

    random import random    # 导入模块 随机数 import random # 内置的 print(random.random()) #0-1 之间随机小数(18位有效数字) p ...

  6. 【PyQt5-Qt Designer】窗口操作

    1.窗口最上栏最大化 最小化 关闭按钮显示 #设置最小化与最大化按钮 self.setWindowFlags(QtCore.Qt.Window) 将其添加到Ui_***  布局代码中即可 2.窗口知识 ...

  7. 安装Vue Devtools

    命令行进入vue-devtools\vue-devtools-master执行 cnpm install (貌似npm不太好使,也可能是我网络代理的原因) (淘宝镜像安装 npm install -- ...

  8. CentOS 7.2编译安装nginx1.10.3+MySQL5.5.38+PHP5.5.38

    1.关闭firewallad 关闭防火墙 systemctl stop firewalld.service 禁止firewall开机启动 systemctl disable firewalld.ser ...

  9. MySQL表操作及数据操作

    表操作 表相当于一个文件,其形式与现实中的表格相同.表中的每条记录都有相应的字段,字段就类似于表格的表头. 表操作详细: #对表进行操作(文件) #首先要切换到指定库(即文件夹)下:use db1; ...

  10. MySQL数据库的权限问题操作及基本增删改查操作

    前面我们讲了mysql的基本内容,现在我们详细的了解一下mysql中的具体操作. what's the SQl SQL(Structured Query Language 即结构化查询语言) SQL语 ...