您的位置:首页 > 其它

[转载]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的方法,大家可以进行尝试
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: