我正在尝试通过linq将变量从数据表拉到数据集,但下面的代码不会编译 - 编译器说ID和EXCHANGE“不是DataRow的成员”,而是数据表“ UDLY“已填充,ID和EXCHANGE是字段名称......所以我不知道这意味着什么,请帮忙吗?
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)
答案 0 :(得分:1)
异常消息是不言自明的。在您的查询中,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
循环来获取数据。
答案 1 :(得分:0)
我认为这是一种更好的方法,假设EXCHANGE
的类型为double。
Dim exchange = (From r In dt.AsEnumerable()
Where r.Field(Of Integer)("ID") = 1
Select r.Field(Of Double)("EXCHANGE"))
.FirstOrDefault()