Vb.net LINQ带字符串。Join()错误:“0”;System.InvalidCastException:无法强制转换类型为'&书信电报;识别器>;
我试图使用linq从数据表中获取一列的不同值,并使用string.join从结果中创建一个字符串,但得到: “System.InvalidCastException:无法将类型为'd_u7a`1[System.String]'的对象强制转换为类型为'System.String[]”。” 我的代码是:Vb.net LINQ带字符串。Join()错误:“0”;System.InvalidCastException:无法强制转换类型为'&书信电报;识别器>;,vb.net,linq,Vb.net,Linq,我试图使用linq从数据表中获取一列的不同值,并使用string.join从结果中创建一个字符串,但得到: “System.InvalidCastException:无法将类型为'd_u7a`1[System.String]'的对象强制转换为类型为'System.String[]”。” 我的代码是: Dim retString As String = "" Dim uniqueCC2 = (From d As DataRow In dt.AsEnumerable() _
Dim retString As String = ""
Dim uniqueCC2 = (From d As DataRow In dt.AsEnumerable() _
Select d.Field(Of String)("CageCardID")).Distinct
Try
'I get the error on the following line
retString = String.Join("</li><li>", uniqueCC2)
Catch ex As Exception
...error code...
End Try
Return "<li>" & retString & "</li>"
正在讨论的列(cagecardd)是varchar(8)…因此是一个字符串
当我深入到uniqueCC2时,它将值显示为字符串
任何帮助都将不胜感激
谢谢
George如果您使用的是.NET,您使用的是哪个版本的.NET?3.5(Visual Studio 2008),有可能吗?尝试将
.ToArray()
添加到查询的末尾。一个旁注:我假设您希望将字符串包装在
中。然后选择它们,这样您就不需要字符串了。Join
:…选择String.Format({0}),d.Field(字符串的)(“cagecardd”))).Distinct()
谢谢Anthony和Tim…非常好的建议。它现在正在工作。是的,它是v3.5。GeorgeThough我不认为我们谈论的是海量数据,但我猜字符串.Join
方法(在时间上)比调用字符串.Format()
为每一个值更有效。Rene…是的,通常是20-100个项目左右…一点也不大。谢谢
Dim uniqueCC2 = dt.AsEnumerable().Select(Function(s As DataRow) s.Field(Of String)("CageCardID")).Distinct()
retString = String.Join("</li><li>", uniqueCC2.ToArray())
...
Select String.Format("<li>{0}</li>", d.Field(Of String)("CageCardID"))).Distinct()
Return String.Concat( uniqueCC2 ) ' no further delimiter needed