VB.NET TrimEnd()不起作用

时间:2013-09-16 11:03:47

标签: sql vb.net trim

我遇到了一个似乎无法解决的问题!特别是使用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(“”,“”)有效,但我不想摆脱所有的空间,只是最后的空间和Trim无法正常工作。如果有人有任何想法,我想听听他们。

更新解决步骤:

因此建议将列更新为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未处理 - 特定强制转换无效。

1 个答案:

答案 0 :(得分:1)

您发布的代码应该有效,尤其是:

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

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

所以我假设问题是列的类型。如果它是charnchar,即使它更短,它的长度也始终为25。然后使用varcharnvarchar

请参阅Stack Overflow问题 What is the difference between char, nchar, varchar, and nvarchar in SQL Server?