Masz wiele sposobów na zrobienie tego. Zależy to głównie od danych, które próbujesz dopasować.
- Pierwsza rzeczą, jaką możesz zrobić, to o posortowana lista
- wtedy, jeśli znasz wartość środku listy można iterację listy od początku od końca
- ale przeważnie tylko zwrócić wartość od momentu znalezienia wartości:
także pierwsze 2 punkty będą działać tylko wtedy, gdy lista ma pewną wartość liczbową, na której można polegać w celu zidentyfikowania przedmiotu.
Pierwszy optymalizacji można zrobić, to:
Foreach (var item1 in List1)
{
Foreach (var item2 in List2)
{
if(item2 == item1) return item1;
}
}
Jeśli naprawdę potrzebujesz tej rutyny się bardzo szybko będziesz musiał zrobić optymalizacji oparte na danych, które są w swoich listach.
Również jeśli twoje dane to string
na obu listach, możesz wygenerować kod skrótu dla każdego ciągu znaków (string.GetHashCode
), a następnie polegać na haśle do sortowania i wyszukiwania na listach.
Istnieje wiele innych sposobów, ale to wszystko zależy od:
- ilość danych masz w swoich listach (jeśli masz tylko 100 elementów nie będzie widać dużo wzrost wydajności)
- jeśli listy są statyczne lub dynamiczne
- jak często można je zmienić, jeśli są one dynamiczne
- jak często można dokonać wyszukiwania w tych listach
- ...
i sprawdzi, czy to działa – Bernardmoes
@Habib, jest to szybsze i zwięzły? mam na myśli, czy to wewnętrznie robi to samo lopping? – tariq
@tariq, tak, wewnętrznie wykonuje pętlę, nie jestem pewien, czy jest szybszy, dlatego udostępniłem drugą opcję zmodyfikowanego kodu z pytania. – Habib