【发布时间】:2019-04-28 21:24:24
【问题描述】:
我有一个包含数据的 DataTable,我可以在 VisualStudio 中调试它并验证值。而且我可以看到列 'Path' 值在 DataTable 对象中可用,但我无法使用 Select 检索行。请帮我找回行。以下是我正在尝试的代码:
注意:path 值 [C:\Program Files<space>(x86)]
string path = @"C:\Program Files (x86)\Common Files\Microsoft Shared\VsHub\1.0.0.0\Microsoft.VsHub.Server.HttpHost.exe"
string condition = string.Format("Path = '{0}'", path);
DataRow row = myDataTable.Select(condition).FirstOrDefault(); //returns null
【问题讨论】:
-
是区分大小写的问题吗?如果您可以确认该值与您拼写的一样存在(还要检查末尾的任何空格),那么此代码没有理由失败
-
我试图重现您的代码,但完全没有问题(正如预期的那样)。正如我所说的那样,有些东西与存储在数据库中的路径不同。可能有些空间不是真正的空间。尝试在编辑器中复制/粘贴数据库行中的值,并查看这些空格的十六进制值。都应该是 0x20。
-
是的@Steve,空格造成了实际问题,并且已通过在比较时删除空格来解决(检查条件)。但我认为这不是在比较时删除两边空格的正确方法,有没有更好的方法?
-
你是如何定义你的路径列的?它应该是一个 nvarchar 列。如果您使用 char(x),则 db 会添加空格以填充列大小。
-
@Steve 这不是从数据库读取,而是从本地机器读取文件路径,显然
path变量是string
标签: c# select datatable datarow