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 不包含 IDEXCHANGE 的定义。您需要像这样在该 ​​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()