vb LINQ to dataset提取单个数据点

时间:2015-12-11 04:17:12

标签: vb.net linq dataset

我正在尝试通过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)

2 个答案:

答案 0 :(得分:1)

异常消息是不言自明的。在您的查询中,x代表DataRow,DataRow不包含IDEXCHANGE的定义。您需要在该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()