vb LINQ到数据集提取单个数据点



我试图通过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不包含IDEXCHANGE的定义。您需要指定要在该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()

最新更新