c# – 如何在.NET中将列表作为参数传递

我的查询基本上是这样的:

SELECT foo
FROM bar
where bar.Id in (1,2,3);

我想将Id的列表作为单个参数传递给IDbDataParameter,其中格式化查询:

SELECT foo
FROM bar
where bar.Id in (?ListOfID);

然后有一个列表,而不是必须做这样的事情:

SELECT foo
FROM bar
where bar.Id in (?id1, ?id2, ?id3);

我知道这可以在其他数据提供者中使用标准的System.Data类来实现吗?

附:我希望它作为单个列表参数而不是一系列参数的原因是因为随着params数量的变化,MySQL会将查询视为新的并且我们放弃了一些缓存优化. MySQl基本上以每个ID的一个查询结束.这与我不想将基本SQl作为字符串操作的原因相同,因为那样每个VAULE最终会有一个查询,这会更糟.

最佳答案 是否可以使用:

string[] myParamaters = new string[2];
myParameters[0] = "id1"
myParameters[1] = "id2"

创建数组并填充后,如何:

SELECT foo
FROM bar
where bar.Id in (string.Join(", ", myParameters));

我不完全确定这是不是你问的问题,但这是我认为你从帖子中理解的内容.

点赞