0

这是一个愚蠢的问题,也许它把我弄乱了,因为它已经很晚了,但是为什么当我尝试使用双引号时,下面的代码也会在反斜杠中添加:

C#:

private List<string> dataList;
        private int ShowAuditLogForPrimaryID { get; set; }
        private string xmlString;
        private DataSet _dataSet;

  SqlDataReader reader = sqlCommand.ExecuteReader();

            dataList = new List<String>();


            while (reader.Read())
            {
                for (int i = 0; i < reader.FieldCount; i++)
                {
                    string rdr = reader[i].ToString();

                    dataList.Add(rdr);

                    string Name = reader.GetName(i); 

                    xmlString = xmlString + Name + "=" + " " + "\"" + dataList[i].ToString() + "\"" +  " ";

                    Console.WriteLine(xmlString);
                }

它在字符串中包含反斜杠,这不允许我的 xml 阅读器读取它。

我很感激任何帮助。提前致谢!

4

1 回答 1

6

您的代码看起来不错,除了您在编写变量之前使用了它。如果您想查看其中的内容,请尝试将字符串打印到控制台;如果您在调试器中查看它,调试器将尝试再次转义引号。

更一般地说,尽量避免编写这样的代码。可以使代码更清晰的一些方法是:

首先,明智地使用常量:

const string quote = "\""; 
const string space = " ";
const string equals = "=";
xmlString =  Name + equals + space + quote + dataList[i].ToString() + quote + space;

现在阅读起来要容易得多,因为那里没有所有这些引号。

其次,调用 toToString是不必要的。ToString如有必要,字符串连接逻辑将自动调用。

第三,String.Format慎用。

const string xmlAttributeFormat = "{0} = \"{1}\" ";
string xmlString = String.Format(xmlAttributeFormat, Name, dataList[i]);
于 2013-03-18T20:05:18.263 回答