LINQ Join On Int = Char数据类型?

时间:2014-01-16 22:40:16

标签: vb.net linq

我写了下面的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使连接工作?

1 个答案:

答案 0 :(得分:1)

SQL nchar映射到C#stringhttp://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)...