我试图通过linq将变量从数据表拉到数据集,但下面的代码无法编译-编译器说ID和EXCHANGE"不是DataRow的成员",但数据表"UDLY"已填充,ID和EXCHARGE是字段名。。。。所以我不知道这意味着什么,有什么帮助吗?
Dim DS As New DataSet()
Dim QRY = DS.Tables("UDLY").AsEnumerable
Dim NME = From x In QRY
Where x.ID = 1 'won't compile x.ID - "...not a member of Datarow"
Select x.EXCHANGE 'won't compile x.EXCHANGE - "ditto"
MsgBox("NME= " & NME)
异常消息不言自明。在查询中,x
表示DataRow,而DataRow
不包含ID
或EXCHANGE
的定义。您需要指定要在该DataRow中访问的列名,如下所示:x("ID")
。所以你的最终查询应该是这样的:-
Dim NME = (From x In QRY
Where x("ID") = 1
Select x("EXCHANGE")).FirstOrDefault()
请注意,我在这里使用FirstOrDefault
来获取第一个匹配的EXCHANGE
。如果您不使用它,它将返回一个集合,然后您将不得不使用ForEach
循环来获取数据。
我认为更好的方法是这样,假设EXCHANGE
是double类型。
Dim exchange = (From r In dt.AsEnumerable()
Where r.Field(Of Integer)("ID") = 1
Select r.Field(Of Double)("EXCHANGE"))
.FirstOrDefault()