【问题标题】:DataTable select criteria with single quotes and without带单引号和不带单引号的 DataTable 选择条件
【发布时间】:2018-11-08 13:21:22
【问题描述】:

我有一个 DataTable dtRefNum。有一行 RefNum = 293 当我尝试使用dt.Select("RefNum = 293")检索值时,我没有得到任何结果,但是当我将数字包装成单引号dt.Select("RefNum = '293'")时,我得到了结果

有人可以解释一下,它是如何工作的吗?

其他值也可以阅读

在数据库列中 RefNum 是一个 nvarchar

【问题讨论】:

  • 听起来RefNum的数据类型是字符串类型。
  • @Crowcoder RefNum 是 nvarchar ,但到目前为止,其他值可以不带引号读取。怎么可能?
  • @Z.R.T. nvarchar 是 SQL 中的字符串。
  • @S.Akbari 同意,但是如何在没有引号的情况下检索同一列中的某些值,而其他值则不能。你如何解释图片上的不同行为?
  • @Z.R.T.如果行为不同,则表示 types 不同。 DataTable 对象是 .NET 对象。列的类型将是 string 而不是 nvarchar。比较将遵循 .NET 规则,其中比较不同类型的对象默认为false。但在 SQL 中,一种类型被隐式转换为另一种类型,并且将值进行比较,就好像它们是相同的类型一样

标签: c# winforms datatable


【解决方案1】:

在搜索不带引号的字符串值时,在其他表上得到结果是非常奇怪的。您确定这些不是数字列吗?

根据docs.microsoft.com/en-us/dotnet/api/system.data.dataview.rowfilterwww.csharp-examples.net/dataview-rowfilter,过滤字符串值/列需要单引号。

所以我认为你最好谨慎行事并使用单引号.. :-)

【讨论】:

  • PS:我看不到你的图片,它们被我公司的防火墙阻止了。
  • 那些不是图像,它是 Microsoft 文档站点。如果您无法阅读文档,则无法编写或修复代码
猜你喜欢
  • 1970-01-01
  • 2015-11-08
  • 2015-08-16
  • 2017-05-03
  • 1970-01-01
  • 2015-07-04
  • 1970-01-01
  • 1970-01-01
  • 2017-02-26
相关资源
最近更新 更多