我正在尝试将SQL查询参数与Azure Cosmos DB SQL API查询中的WHERE ... IN
语句一起使用:
var componentDesignGuids = new List<Guid>();
// ...
var queryDefinition = new QueryDefinition(
"SELECT componentDesign.guid, componentDesign.component.name, componentDesign.component.componentType " +
"FROM components componentDesign " +
"WHERE componentDesign.guid IN (@componentDesignGuids)")
.WithParameter("@componentDesignGuids", string.Join(",", componentDesignGuids.Select(guid => $"\"{guid}\""))));
,但这会导致查询,其中替换的参数是单个字符串,例如IN ("guid0, guid1, guid2")
。由于这是一个IN
子句,因此我想在其中放置不确定数量的字符串,例如IN ("\"guid0\", \"guid1\", \"guid2\"")
。我意识到我可以使用插值字符串来完成这项工作,但是我希望输入尽可能安全以防止注入。如何使用QueryDefinition
和/或WithParameter
进行指定?