zoukankan      html  css  js  c++  java
  • 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的方法,大家可以进行尝试
  • 相关阅读:
    LeetCode 773. Sliding Puzzle
    oracle latch工作原理
    Oracle关于锁的几种类型和参数
    Java的反射机制
    JAVA多线程与并发学习总结
    Spring 概念详解
    Spring的AOP
    spring面试题 对DI , AOP概念的理解
    双11的架构
    Java线程的定义
  • 原文地址:https://www.cnblogs.com/xuanhai/p/6374982.html
Copyright © 2011-2022 走看看