我尝试使用linq查询从vb中的数据中查询某个值,但是我遇到了一些错误。
这是我的代码:
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.
答案 0 :(得分:0)
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(Nothing)