Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Query.copyToDataTable不工作vb.net_Vb.net_Linq - Fatal编程技术网

Query.copyToDataTable不工作vb.net

Query.copyToDataTable不工作vb.net,vb.net,linq,Vb.net,Linq,大家好,我正在使用Linq并尝试将结果复制到表对象。但是,我收到一个强制转换异常 代码如下: Dim teams As DataTable = citySideDataset.Tables("Teams") Dim query = From team In teams.AsEnumerable() Where team.Field(Of String)("Venue ID") = venueID And team.Field(Of Integer)("Division ID")

大家好,我正在使用Linq并尝试将结果复制到表对象。但是,我收到一个强制转换异常

代码如下:

Dim teams As DataTable = citySideDataset.Tables("Teams")
        Dim query = From team In teams.AsEnumerable() Where team.Field(Of String)("Venue ID") = venueID And team.Field(Of Integer)("Division ID") = divisionID Select team
        Dim boundTable As DataTable = query.CopyToDataTable()
有什么建议吗

编辑:

对不起。 这是一个无效的例外


在尝试复制到数据表之前,它工作得很好。

在注释中进行了一些探索,我们了解到数据库中
部门ID
的数据类型是
长的
。当您试图从字段中提取值时,查询使用整数的
,这将抛出一个错误。我们还了解到,您的列支持空值。要修复您的查询,您应该使用
的null(of Long)
,这将使其成为

Dim query = From team In teams.AsEnumerable() _
            Where team.Field(Of String)("Venue ID") = venueID _
            And team.Field(Of Nullable(of Long))("Division ID") = divisionID _
            Select team
您应该注意的最后一点是,
CopyToDataTable()
如果没有行通过您使用的任何过滤器,则会抛出自己的异常。因此,如果您的结果有可能为空,您将希望在调用该方法之前检查行

Dim boundTable As DataTable
If query.Any() Then
    boundTable = query.CopyToDataTable()
Else
    'just use empty clone of original table, if applicable
    boundTable = table.Clone() 
End If

发布准确的堆栈跟踪或强制转换异常文本。我们不知道您遇到了什么异常。它在CopyToDataTable之前有效,因为在调用之前它什么都不做。一切都推迟到那时。不管怎样,检查一下你的类型。InvalidCastException相当简单。更清楚地看一下表值Venue ID和相应的变量,以及Division ID和其他变量。这些类型中的一种并不是你所期望的。该程序正在尝试强制转换,但未成功,因此出现错误。我正在关注MSDN网站。我检查了数据库。场地ID是一个字符串,部门ID是一个数字(长)。部门ID支持空值吗?我试过了,但它不起作用。这肯定与数字类型有关。我正试图将数字转换为Long,但在我返回到我最早的一条评论之前,它不起作用。有些东西不是你期望的那种类型。仔细检查数据库。然后仔细检查生成原始
citySideDataset
的任何代码,它可能确实是存储过程,也可能是内置代码。是什么东西把那个列变成了字符串?小数?其他类型的?这就是您需要查找的内容。要进行故障排除,请逐步查看代码。在你有桌子的地方放一个断点。看看它的专栏。您可以查看它的属性。例如,您可以查看teams.Columns(“部门ID”).DataType。上面说什么?