我写了下面的LINQ查询,根据一个常见的(我认为是)整数来连接两个表:
Dim test =
(From forecast In dtForecast.AsEnumerable() Join dns In dtDns.AsEnumerable()
On forecast.Field(Of Int32)("BrandId")
Equals dns.Field(Of Int32)("SalesCategory01Code")
Select New With
{
.Key = forecast.Field(Of String)("BrandName")
}).ToList()
但是,它会引发异常Specified cast is not valid
我发现BrandId列是int
,SalesCategory01Code列设置为char(6)
。
是否可以修改它并使用LINQ使连接工作?
答案 0 :(得分:1)
SQL nchar
映射到C#string
(http://social.msdn.microsoft.com/),因此请相应地投射它并使用Int32.Parse
:
Dim test =
(From forecast In dtForecast.AsEnumerable() Join dns In dtDns.AsEnumerable()
On forecast.Field(Of Int32)("BrandId")
Equals Int32.Parse(dns.Field(Of String)("SalesCategory01Code"))
Select New With
{
.Key = forecast.Field(Of String)("BrandName")
}).ToList()
您还可以修改选择数据并将其强制转换的SQL查询:
SELECT SalesCategory01Code = CAST(SalesCategory01Code as int)...