Многократная Итерация Списка - PullRequest
0 голосов
/ 03 декабря 2018

У меня есть (2) списки, которые мы будем называть списками A и List B, которые могут быть различной длины.У каждого элемента есть параметр, связанный с ним как идентификатор, в этом случае мы можем вызвать Comment.Мне нужно повторить:

foreach (item a in A)
{
      foreach (item b in B)
      {
           if (b.Comment == a.Comment)
           {
            send to a void to process: void(b,a);

По сути, мне нужно обрабатывать каждый элемент из одного списка в другой, если они имеют одинаковый идентификатор.Будет ли полезен почтовый индекс в этом случае?Исходя из того, что я выложил, логически я хотел бы выполнить цикл для каждого элемента в списке A, проверить каждый элемент в списке B, который имеет тот же идентификатор «Комментарий», если да, то отправить текущее значение a & b в функцию дляобработать и продолжить цикл остальной части списка А.

Ответы [ 2 ]

0 голосов
/ 05 декабря 2018

После некоторых исследований я пошел по маршруту декартовых произведений, получив соответствующие элементы [0] и [1] каждой пары

var Fruits =
from apple in ListA
from Banana in ListB
select new[] {apple, Banana};

then went on to break down sending Smoothie(Fruits[0],Fruits[1])
0 голосов
/ 03 декабря 2018

Переосмыслите тип коллекции, которую вы используете.

Если бы у вас был один из ваших списков в качестве словаря, ключом которого является комментарий, вам нужно было бы выполнить итерацию только одного из списков, а затем проверить, содержит ли ваш словарь это.

Если комментарий является строкой, а item является типом.

Dictionary<string, item>

Используя LINQ, легко создать словарь: https://docs.microsoft.com/en-us/dotnet/api/system.linq.enumerable.todictionary

Конечно, вы не можете иметь несколько элементов с одинаковымиключ в словаре.Если нет уникальных ограничений на комментарий, ваш словарь может выглядеть следующим образом

Dictionary<string, List<item>>

Я не буду вдаваться в подробности кода без полного контекста, но я думаю, вы поняли.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...