我遇到了一个似乎无法解决的问题!特别是使用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未处理 - 特定强制转换无效。
答案 0 :(得分:1)
您发布的代码应该有效,尤其是:
myVariable = myVariable.TrimEnd() ' note the missing parameters
它将删除末尾的所有空格,包括偶数制表符或换行符。
所以我假设问题是列的类型。如果它是char
或nchar
,即使它更短,它的长度也始终为25。然后使用varchar
或nvarchar
。
请参阅Stack Overflow问题 What is the difference between char, nchar, varchar, and nvarchar in SQL Server?