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

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的方法,大家可以进行尝试 

相关内容推荐