2014-01-21 3 views
0

Я новичок в 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». Я бы хотел использовать Row1 во втором запросе req2. Но у меня есть следующее сообщение об ошибке: «Имя« Row1 »не объявлено или не находится в текущем диапазоне».

Как я могу решить эту проблему?

Заранее благодарю вас за помощь!

ответ

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 

(я уверен, что будут более эффективными способами достижения этой цели, по общему признанию, ... вы должны смотреть в объединение, однако, это будет по крайней мере заставить вас двигаться вперед немного..)

+0

спасибо! Действительно, это работает. Мне нужно несколько недель, чтобы улучшить понимание Linq, а затем я попытаюсь использовать Joins. –

Смежные вопросы