使用格式将字典转换为列表

时间:2014-10-08 17:56:20

标签: c# linq

我没有使用Oracle的经验,并且正在使用Oracle XE来测试我的代码。

我遇到了一个小问题。希望得到一些帮助。

好吧,我正在尝试构建一个跨数据库平台应用程序,我需要动态生成SELECT语句。除了甲骨文,甲骨文希望列名在引号中,否则我开始得到"无效标识符"错误。

例如,下面的语句对我不起作用,但是如果我将firstname放在引号中,它就可以工作。

SELECT firstname
FROM
"emp"

然而,这有效

SELECT "firstname"
FROM
"emp"

现在回到我正在处理的代码片段。

var sourceBuilder = new StringBuilder();

if (sourceType == DataSource.OracleServer)
{
    sourceBuilder.Append("SELECT ")
      .Append(String.Join(", ", (mappedColumnsList.Select(x => x.Key))))
      .Append(" FROM ").Append(sourceAttribute);

}
else
    sourceBuilder.Append("SELECT ")
      .Append(String.Join(", ", mappedColumnsList.Select(x => x.Key)))
      .Append(" FROM ").Append(sourceAttribute);

现在,当sourceType为Oracle时,我需要在我的字典展平位置添加双引号。

我尝试使用

sourceBuilder.Append("SELECT ")
  .Append(String.Join(", ", string.Format("\"" + mappedColumnsList.Select(x => x.Key) + "\"")))
  .Append(" FROM ").Append(sourceAttribute);

但显然,这不起作用。

1 个答案:

答案 0 :(得分:3)

您想要更改此内容:

string.Format("\"" + mappedColumnsList.Select(x => x.Key) + "\"")

要:

mappedColumnsList.Select(x => "\"" + x.Key + "\"")