如何在Azure Blob索引查询中插入C#变量并解决编译报错
报错原因
核心是C#逐字字符串(@前缀)与字符串拼接的语法混用错误:逐字字符串的双引号转义规则(两个双引号代表一个实际双引号)仅在同一个@""包裹的块内生效,你拆分拼接时没有正确闭合字符串块,因此触发编译错误。
正确实现方案
方案1:逐字插值字符串(推荐,C# 6及以上版本支持,可读性最高)
直接使用$@前缀的插值逐字串,无需拆分拼接即可嵌入变量:
var variable1 = "test1"; var variable2 = "test2"; // 基础写法 string query = $@"""folderDepth"" = '{variable1}' AND ""parentFolder"" = '{variable2}'";
安全补充
如果变量值可能包含单引号,需要提前转义避免查询语法错误:
// 转义变量中的单引号,将单引号替换为两个连续单引号 string safeVar1 = variable1.Replace("'", "''"); string safeVar2 = variable2.Replace("'", "''"); string query = $@"""folderDepth"" = '{safeVar1}' AND ""parentFolder"" = '{safeVar2}'";
方案2:传统字符串拼接写法
如果需要用传统拼接方式,确保每个逐字字符串块都正确闭合:
query = @"""folderDepth"" = '" + variable1 + @"' AND ""parentFolder"" = '" + variable2 + "'";
内容的提问来源于stack exchange,提问作者OJB1
相关产品推荐
相关产品推荐

