Optymalizacja porównań kolekcji

0

Witam,

Piszę algorytm w którym operuję na dwóch kolekcjach danych pobranych z bazy danych. Pierwszą traktuję jako wzorcową dla drugiej, tzn. dla każdego itemu z kolekcji nr 2 sprawdzam czy istnieje analogiczny( na podstawie atrybutu "PartNumber") w kolekcji nr 1. Jeżeli nie został znaleziony to należy go usunąć z drugiej kolekcji.

Zamieszczam moją wersję algorytmu o złożoności kwadratowej :

            IQueryable<Item> patternCollection = GetAllFromDatabase(patternLanguage);
            IQueryable<Item> targetCollection = GetAllFromDatabase(targetLanguage);

            foreach (Item targetItem in targetCollection)
            {
                bool isFound = false;
                string targetItemPartNumber = targetItem.PartNumber;

                foreach (Item patternItem in patternCollection)
                {
                    string patternItemPartNumber = patternItem.PartNumber;

                    if (targetItemPartNumber == patternItemPartNumber)
                    {
                        isFound = true;
                        break;
                    }
                }

                if (!isFound) //tutaj kod usuwający zbędny item z kolekcji nr 2

 

Zwracam się z prośbą o wskazówki optymalizujące to rozwiązanie. Myślałem początkowo o zastosowaniu zapytań LINQ zamiast pętli foreach, ale to moim zdaniem zadziała w przeciwną stronę :/ ( jako, że LINQ skłania się jednak w kierunku czytelności).

1

Zle sie do tego zabierasz, po prostu zrob zapytanie do bazy z np. joinem zeby wyfiltrowac rezultaty i miec gotowe wyniki po stronie klienta

1 użytkowników online, w tym zalogowanych: 0, gości: 1