[转载]EF或LINQ 查询时使用IN并且根据列表自定义排序方法
2017-01-11 09:28
295 查看
原文地址:EF或LINQ 查询时使用IN并且根据列表自定义排序方法作者:李明川
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改变了原有的手写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的方法,大家可以进行尝试
相关文章推荐
- 同步和异步
- [macOS] error when brew updating
- 利用iscroll4实现轮播图效果实例代码
- mybatis 别名的使用
- 天天写业务代码,如何成为技术大牛?
- java 与testng利用XML做数据源的数据驱动示例详解
- 犯错
- Android 系列 6.17使用Attributes和TextWatcher接口约束EditText值
- google Map 在手机上是否可以使用的判断
- 解决Eclipse左键无法查看maven第三方包的源代码,多图亲测可用【转】
- Hibernate:More than one row with the given identifier was found解决办法
- 如何在一台机器上配置多个Git的rsa
- JDK8新特性:lambda入门
- Android 系列 6.16使用TextView和EditText显示文本字段
- ssm权限管理的设计与实现(一)
- 详解js前端代码异常监控
- navicat快捷键
- printf和cout 数字格式化输出对比
- 关于Linux下对于makefile的理解
- JQuery操作属性、样式、风格(attr、class、css)