在sql WHERE {params}中有很多参数可以吗?

时间:2017-01-04 12:58:51

标签: c# sql-server select where

所以,我有一个SELECT和我的WHERE选择有时添加很多,有时不是x = 1 OR x = 2,我想可能会有100个。

这样做可以吗?或者它可以杀死性能?

这是更直观的例子

string sqlString = String.Format("SELECT * FROM categories WHERE {0}",
                                  stringWithAlotOfORsStatment)

根据情况和用户选择的内容生成stringWithAlotOfORsStatment

不确定这个问题是否有意义:L

1 个答案:

答案 0 :(得分:2)

您可以使用单个X=1 OR X=2...替换多个X IN (1,2,3)语句,例如:

SELECT * From SomeTable where X in (1,2,3)

我建议使用LINQ和EF或Dapper.NET来创建安全查询,而不是使用String格式来传递值列表。

在LINQ to EF数组或List.Contains映射到IN子句:

var ids=new []{1,2};
var results = from r in ctx.SomeTable
              where ids.Contains(r.x)
              select r;

在Dapper中,您可以将数组作为参数传递:

string sql = "SELECT * FROM SomeTable WHERE x IN @ids"
var results = conn.Query(sql, new { ids = new[] { 1, 2, 3});