-1

はい、私は何Option Strictが機能するかを知っており、かなり頻繁に使用しています。私の問題は私のクエリに起因してLinqおり、それを吐き出す方法がわかりません。DataRows行のIDが指定したIDと等しい特定のテーブルですべてを取得したいと考えています。また、このクエリはOption Strict、必要な行を取得しなくても問題なく機能しますが、オンにしたいと考えています。

エラー: Disallow の遅延バインディングに対する Option Strict

これが私が今持っているものです...

  Dim cRows() As DataRow = (From cRow In MasterDataSet.Tables(1).Rows Where cRow(childTableKey) = intParID).ToArray

以下でエラーが発生しています: cRow(childTableKey)

エラーの意味も知っていますが、エラーとして表示されないようにする方法がわかりません。私はそれをキャストしようとしました...

4

3 に答える 3

0

RowCollection拡張子を追加しない場合は、行を からにコピーする必要がありますArray。その後、LINQ を使用できます。

Dim myRows(-1) as DataRow
MasterDataSet.Tables(1).Rows.CopyTo(myRows, 0)

 Dim cRows() As DataRow = (From cRow In myRows 
    Where CInt(cRow(childTableKey)) = intParID).ToArray()
于 2015-03-20T21:37:36.067 に答える
0

使ってみて

In MasterDataSet.Tables(1) Where CType(cRow(childTableKey), Integer)

それ以外の

In MasterDataSet.Tables(1).Rows Where cRow(childTableKey)

以下の例は、Option Strict で動作しています。

    Dim ds As New DataSet
    Dim dt As New DataTable
    ds.Tables.Add(dt)
    Dim dc As New DataColumn
    dc.DataType = GetType(System.Int32)
    dt.Columns.Add(dc)
    Dim dr As DataRow = dt.NewRow
    dr(0) = 10
    dt.Rows.Add(dr)

    Dim rows As DataRow() = (From r In ds.Tables(0) Where CType(r(0), Integer) = 10).ToArray
于 2015-03-20T20:50:47.163 に答える