我是vb.net的初学者,最近,我写了这个查询: 我不认为这可以解释你我的程序的目标很重要(如果是,请不要犹豫告诉我。) 我有两个问题:req1和req2
For i = 0 To My_List.Count - 2
For j = i + 1 To My_List.Count - 1
Dim req1 = From Row1 In list_Rows Where Row1.C1.Equals(My_List(i)) Select Row1
Dim A As Integer = 0
For Each r In req1
Dim req2 = From Row2 In list_Rows Where (Row2.C1.Equals(My_List(j)) AndAlso Row2.C2.Equals(Row1.C2)) Select Row2
A += req2.count
Next r
'process....
Next
Next
正如您在下面的代码中看到的,在req1的末尾,我得到“Row1”。 我想在第二个req2查询中使用Row1。 但是我有以下错误消息: “名称'Row1'未声明或不在当前范围内。”
我该如何解决这个问题?
提前感谢您的帮助!
答案 0 :(得分:1)
您的问题很难理解,但我怀疑您只需要使用r
(当前迭代中的行)而不是Row1
。名称Row1
在查询表达式本身中只具有任何含义。所以试试这个:
Dim req2 = From Row2 In list_Rows Where (Row2.C1.Equals(My_List(j)) AndAlso
Row2.C2.Equals(r.C2)) Select Row2
(我很确定会有更有效的方法来实现这一点,不可否认......你应该考虑加入。但是,这至少会让你向前迈进一步。)