0

こんにちは、私は 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()

助言がありますか?

編集:

ごめん。InvalidCastException です。

dataTable にコピーしようとするまでは問題なく動作します

4

1 に答える 1

0

コメントを調べたDivision IDところ、データベースでのデータ型がlong. of Integerフィールドから値を抽出しようとするときにクエリが使用され、エラーがスローされます。また、お客様の列が null をサポートしていることもわかりました。クエリを修正するにはof Nullable(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
于 2013-04-10T02:40:02.973 に答える