vb LINQ to dataset 提取单个数据点
vb LINQ to dataset to extract single data point
我试图通过 linq 将数据表中的变量提取到数据集,但下面的代码无法编译 - 编译器说 ID 和 EXCHANGE "aren't a member of 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)
异常消息是不言自明的。在您的查询中,x
表示一个数据行,DataRow
不包含 ID
或 EXCHANGE
的定义。您需要像这样在该 DataRow 中指定要访问的列名称:x("ID")
。所以你的最终查询应该是这样的:-
Dim NME = (From x In QRY
Where x("ID") = 1
Select x("EXCHANGE")).FirstOrDefault()
请注意,我在这里使用 FirstOrDefault
来获取第一个匹配项 EXCHANGE
。如果你不使用它,它将 return 你一个集合,然后你将不得不使用 ForEach
循环来获取数据。
我认为更好的方法是这样,假设 EXCHANGE
是双精度类型。
Dim exchange = (From r In dt.AsEnumerable()
Where r.Field(Of Integer)("ID") = 1
Select r.Field(Of Double)("EXCHANGE"))
.FirstOrDefault()
我试图通过 linq 将数据表中的变量提取到数据集,但下面的代码无法编译 - 编译器说 ID 和 EXCHANGE "aren't a member of 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)
异常消息是不言自明的。在您的查询中,x
表示一个数据行,DataRow
不包含 ID
或 EXCHANGE
的定义。您需要像这样在该 DataRow 中指定要访问的列名称:x("ID")
。所以你的最终查询应该是这样的:-
Dim NME = (From x In QRY
Where x("ID") = 1
Select x("EXCHANGE")).FirstOrDefault()
请注意,我在这里使用 FirstOrDefault
来获取第一个匹配项 EXCHANGE
。如果你不使用它,它将 return 你一个集合,然后你将不得不使用 ForEach
循环来获取数据。
我认为更好的方法是这样,假设 EXCHANGE
是双精度类型。
Dim exchange = (From r In dt.AsEnumerable()
Where r.Field(Of Integer)("ID") = 1
Select r.Field(Of Double)("EXCHANGE"))
.FirstOrDefault()