繁体   English   中英

如何在vb.net中使用linq从数据表中查询单个值

[英]How to query a single value from a datatable using linq in vb.net

我正在尝试使用linq查询从vb中的datable查询值,但遇到了几个错误。

这是我的代码:

For Each cl In clients
Dim cn As DataTable
    cn = getClients() #datatable with two columns, client code (cln_idck) and client name (cln_name)
Dim clientname As String
clientname = From cntable In cn Where cntable.Item("cln_idck") = cl Select (cntable.Item("cln_name")).ToString()

#do something   
Next

我只是想获取客户端名称,并使用客户端代码搜索将其放入字符串变量clientname中。 上面的代码给我一个错误。

“范围变量名称不能与“对象”类的成员名称匹配”

任何想法为什么这不起作用?

谢谢您的帮助!

拉斐尔

更新:

客户是具有客户代码的(字符串)列表

Dim clients As New List(Of String)
    clients.Add("Cln1")
    clients.Add("Cln2") #etc.

Select返回IEnumerable(Of T)(并且您正在使用DataTable的DataRows,因此将获得IEnumerable(Of DataRow)。

如果要在字段cln_name中获取字符串,则需要首先将查询结果转换为字符串枚举,然后具体化元素

For Each cl In clients
    Dim clientname = (From cntable In t Where cntable.Item("cln_name") = cl
                     Select (cntable.Item("cln_name").ToString())).First()

    Console.WriteLine(clientName)
Next

当然,这是基于cl的每个元素在表中都具有精确匹配的假设。 在这种情况下,您应该将First更改为FirstOrDefault,并被告知您的clientName字符串可以为null(无)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM