C# 从dataGridView DataRow中的数据库检索带有转义字符的文件路径

C# 从dataGridView DataRow中的数据库检索带有转义字符的文件路径,c#,datagridview,C#,Datagridview,我将各种数据存储在MS Access数据库文件中,并将其填充到dataGridView中。其中一列是存储文件位置的字段。如果我加载数据库文件,我可以看到它存储为 D:\test\1.txt 现在,我尝试使用以下方法检索它 foreach (DataRow row in dataTable.Rows) { string Location = row["file_location"].ToString(); } 当我检查debug watch(调试监视)窗口时,我可以看到字符串位置实际

我将各种数据存储在MS Access数据库文件中,并将其填充到dataGridView中。其中一列是存储文件位置的字段。如果我加载数据库文件,我可以看到它存储为

D:\test\1.txt
现在,我尝试使用以下方法检索它

foreach (DataRow row in dataTable.Rows)
{
     string Location = row["file_location"].ToString();
}
当我检查debug watch(调试监视)窗口时,我可以看到
字符串位置实际上是
D:\\test\\1.txt
现在我知道它正在添加一个
\
作为转义字符,但我不确定如何使我的
字符串位置
实际保留正确的路径而不是转义路径

我试着用几种方法添加逐字字符串文字,但我不确定它是否会像我读到的那样影响它,特别是如果它已经从数据库文件中提取出来,或者即使我把它放在了正确的位置

我尝试了下面的两种选择,但我不相信这两种方法都能奏效,而且最终都没有奏效

string Location = @"";
Location = row["file_location"].ToString();

希望有人能帮我解决这个问题。我已经阅读了很多StackOverflow文章,我似乎找不到能够以我能理解的方式说明我的具体问题的东西。逐字字符串()实际上是用于编译时文本,对于运行时指定的值根本没有用处

看起来你唯一担心的转义字符是反斜杠,所以解决问题的一个非常快速的方法是:

string Location = row["file_location"].ToString().Replace("\\","\");
当然,可能还有更优雅的方式

更新:

如前所述,您可能不了解手表窗口。不管实际值如何,这些字符串都将被转义。考虑:

    static void Main(string[] args)
    {
        watchisescaping();
        Console.ReadKey();
    }

    static void watchisescaping()
    {
        string location = @"c:\dim\bulbs";
        Console.WriteLine(location);
        Console.ReadKey();
    }

手表窗口显示位置为
c:\\dim\\bulls
,但控制台输出为
c:\dim\bulls
。在datagrid中查看该字符串时,您确定该字符串仍然是转义的吗?

我得到一个关于常数中换行符的错误,因此我将其更改为string replaceWith=@“\”;字符串位置=行[“文件位置”]。ToString().Replace(“\\”,replaceWith);然而,调试手表仍然显示双后斜杠它似乎没有取代它我想你的调试手表可能是重新逃脱它为你。让我在我的项目中重复一下。这有点令人沮丧,我依靠手表来检查很多变量。我想我必须重新评估我正在看的东西。但我认为这就是我的代码无法正常工作的原因,因为它从未找到正确的文件位置。我想我还有更多的工作要做,以取消“监视”窗口(以及本地和自动)为文本值提供的文本可视化工具。这是一个小放大镜图标。我不知道文本可视化工具,但它似乎非常有用。谢谢你的提醒!
    static void Main(string[] args)
    {
        watchisescaping();
        Console.ReadKey();
    }

    static void watchisescaping()
    {
        string location = @"c:\dim\bulbs";
        Console.WriteLine(location);
        Console.ReadKey();
    }