0

我有一个我似乎无法解决的问题!特别是使用 TrimEnd() 函数。

背景:使用 Visual Studio 2010 Express,我正在构建一个 VB.NET 应用程序,该应用程序使用LINQ to SQL从内置 SQL 数据库中提取数据并将其放入数据网格视图中。然后我从数据网格中获取一个值并将其放入其他地方的变量中。

问题:如果数据库中的一个字段的最大长度为 25 个字符,但具体来说只有 10 个,那么最后我会得到 15 个额外的空格。因此,当我将单元格值拉入变量时,它是"variable ".

我一直在努力摆脱最后的空间。唯一有效的方法是.Replace方法,但我不想去掉中间的任何空格,只去掉末尾的多余空格。这是我在做一些研究后尝试过的一些东西:

1.

Dim sChar as String = " "
myVariable = myVariable.TrimEnd(sChar)

2.

myVariable = myVariable.Trim()

3.

Dim charsToTrim As Char() = {" "c}
myVariable = myVariable.TrimEnd(charsToTrim)

这些都没有奏效。正如我所说, myVariable = myVariable.Replace(" ", "") 有效,但我不想摆脱所有的空间,只是最后的空间和修剪不起作用。如果有人有任何想法,我想听听他们的意见。

更新解决步骤:

因此建议将列更新为 nvarchar。这使我可以将数据输入到字段中,并且 SQL 不会用多余的空格填充剩余的字符。但是,一旦我进行了更改,我的 LINQ to SQL 就停止了工作。

Public Sub LoadClients()
Dim query = From a In db.Clients
        Select a.Account_Number,
        a.Client_Type,
        a.Client_Name,
        a.Client_Address1,
        a.Client_Address2,
        a.Client_City,
        a.Client_State,
        a.Client_ZIP,
        a.Client_Contact,
        a.Client_Phone

    dgvClients.DataSource = query

未处理获取 InvalidCastException - 特定转换无效。

4

1 回答 1

1

您发布的代码应该可以工作,尤其是这个:

myVariable = myVariable.TrimEnd() ' note the missing parameters

它将从末尾删除所有空格,包括制表符或换行符。

所以我认为问题出在列的类型上。如果是,char或者nchar它总是有 25 的长度,即使它更短。使用varcharnvarchar然后。

请参阅 Stack Overflow 问题SQL Server 中的 char、nchar、varchar 和 nvarchar 有什么区别?

于 2013-09-16T11:15:17.513 回答