c# - SQL Server SELECT 语句通过传入的字符串数组进行过滤

标签 c# sql-server arrays

我有一个名为 MyProducts 的表,我想返回 item1 和 item2

SELECT item1, item2 from MyProducts

但是我希望它在我传入的字符串数组上进行过滤(来自 C#)。这是一个非常大的表,所以我的“IN”语句就出来了。我将如何使用 join 语句来做到这一点。谢谢!

最佳答案

IN 语句没有理由是“out”;最终,这是一种完全合理的过滤方式 - 让优化器担心各种选项。它当然不会受到 MyProducts 较大这一事实的影响。添加连接会增加工作量:但是,它不会减少“命中”次数或所涉及的工作量。例如,使用 dapper 来做到这一点只需:

string[] filter = ...
var rows = connection.Query(
     "select item1, item2 from MyProducts where SomeField in @filter",
     new {filter});

或者使用 LINQ:

string[] filter = ...
var rows = db.Products.Where(x => filter.Contains(x.SomeField));

关于c# - SQL Server SELECT 语句通过传入的字符串数组进行过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12746724/

相关文章:

sql - 使用嵌套 cfloop 查询

javascript - javascript中数组的比较

sql-server - SSL 是否在内部使用散列?

c++ - 检查二维数组中相邻的对角线位置

c++ - 如果引入一对以上的数据,为什么这个程序会崩溃?

c# - 在 C# 堆栈溢出中使用访问器

c# - 如何迭代 linq-to-sql 查询结果的结果并追加结果?

c# - ProximityDevice 未找到索尼 RC-S380 NFC 读写器

c# - 在 lambda 表达式中取反 Func<T, bool>

sql-server - 在将 python 3.5 与 pandas 和 sqlalchemy 一起使用时,尝试从 csv 文件在 SQL Server 2016 中创建新数据库表时出错