博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQL脚本IN在EF中的应用
阅读量:4885 次
发布时间:2019-06-11

本文共 1632 字,大约阅读时间需要 5 分钟。

C#查询条件中存在in,为了避免拼脚本,参数化查询数据库,提高安全性,规避脚本注入。网上找了好多,最后发现 SqlParameter 是无法实现in的操作,所以只能变相来实现,结果还是不错的,性能上各位自己去测试一下吧,因为in操作本身就比较慢(无法使用索引)。下面给出SQl脚本

--传统in操作SELECT  a.NAMEFROM    ( SELECT    '张源' AS NAME          UNION ALL          SELECT    '赵明' AS NAME          UNION ALL          SELECT    '王刚' AS NAME          UNION ALL          SELECT    '陈红' AS NAME          UNION ALL          SELECT    '孙强' AS NAME          UNION ALL          SELECT    '李伟' AS NAME          UNION ALL          SELECT    '钱昆' AS NAME          UNION ALL          SELECT    '郑芳' AS Name        ) aWHERE   name IN ( '张源', '郑芳' )--使用CHARINDEX实现in操作SELECT  a.NAMEFROM    ( SELECT    '张源' AS NAME          UNION ALL          SELECT    '赵明' AS NAME          UNION ALL          SELECT    '王刚' AS NAME          UNION ALL          SELECT    '陈红' AS NAME          UNION ALL          SELECT    '孙强' AS NAME          UNION ALL          SELECT    '李伟' AS NAME          UNION ALL          SELECT    '钱昆' AS NAME          UNION ALL          SELECT    '郑芳' AS Name        ) aWHERE  CHARINDEX(','+CAST(Name AS NVARCHAR(MAX))+',',',张源,郑芳,')>0

 

下面在给出一段EF代码:

var ids = string.Join(",", id);            SqlParameter[] para = new SqlParameter[] {            //-1表示最大max               new SqlParameter("@DetialIDs", SqlDbType.VarChar, -1) { Value=ids}            };            var sql = @"SELECT  DetialID                         FROM    OrderDetial                        WHERE   CHARINDEX(',' + cast( DetialID as varchar(max)) + ',', ','+@DetialIDs +',')> 0";            return Context.Database.SqlQuery
(sql, para);

 

转载于:https://www.cnblogs.com/beijing2020/p/6072526.html

你可能感兴趣的文章
Codeforces Round #296 (Div. 2) A. Playing with Paper
查看>>
windows-install-python-and-sphinx(*.rst file)
查看>>
UML各种图总结-精华
查看>>
jquery $.each()用法
查看>>
我的软考之路(四)——数据结构与算法(2)之树与二叉树
查看>>
Effective C++_笔记_条款02_尽量以const、enum、inline替换#define
查看>>
spring-hadoop之操作hbase
查看>>
dom 解析 XML
查看>>
php date
查看>>
django模板的使用
查看>>
cocos2dx内存管理
查看>>
error: variably modified 'table' at file scope
查看>>
sqlite 下载地址
查看>>
ViewPager的addOnPageChangeListener方法详解
查看>>
一个很好用的GD图像处理类image.class.php,推荐给大家
查看>>
shell 数值计算
查看>>
WebApi的多版本管理
查看>>
转:『代码』JS封装 Ajax级联下拉列表
查看>>
清北学堂2017NOIP冬令营入学测试P4749 C’s problem(c)
查看>>
自动编号维护SNRO
查看>>