是的,我知道Option Strict
做了什么,我经常使用它。我的问题源于我的Linq
查询,而我似乎无法弄清楚如何从中抛出它。我希望在给定的表中获取所有DataRows
,其中行的id等于我给它的id。此问题在没有Option Strict
的情况下工作得很好我得到了我需要的行,但是我想要它。
错误:选项严格禁止后期绑定
这就是我现在所拥有的......
Dim cRows() As DataRow = (From cRow In MasterDataSet.Tables(1).Rows Where cRow(childTableKey) = intParID).ToArray
错误发生在下面: cRow(childTableKey)
我也知道这个错误意味着什么,但似乎无法想象如何阻止它将其视为错误。我已经尝试过铸造它等等......
答案 0 :(得分: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
答案 1 :(得分:0)
试试这个:
Dim filteredTable1Data= MasterDataSet.Tables(1).AsEnumerable().
Where(Function(r) r.Field(of Integer)("childTableKey")=intParID)
有关详细信息,请参阅:
Queries in LINQ to DataSet
LINQ to DataSet Examples
Creating a DataTable From a Query (LINQ to DataSet)
答案 2 :(得分: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()