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).