[C#] Hogyan kell két listát összehasonlítani?
Van 2 stringeket tartalmazó listám, az egyik egy nagyobb halmaz (A), a másik kisebb (B). Olyan feltételt szeretnék írni, ami akkor ad igazat, ha a B lista elemei közül valamelyik (bármelyik, de nem az összes egyszerre!) benne van A-ban.
Eddig jutottam, de ez nem jó így, mert teljesen mindegy milyen elemek vannak B-ben, mindig belelép az if-be.
if ( A.Except(B).Any() ) {
...
}
Én ezt úgy csinálnám meg, hogyha legalább 1-nek benne kell lennie, de az összes nem lehet benne.
int összesen_ennyi_van_a_ban = 0 //ezzel számolom, hogy hány elem van meg a-ban b-ből
végigmegyek b összes elemén, és megvizsgálom, hogy benne van e.
ha benne van, akkor összesen_ennyi_van_a_ban++
amikor végzett b összes elemének vizsgálatával, akkor
ha b elemszáma != összesen_ennyi_van_a_ban akkor igaz
aztán ezen lehet még finomítani, hogy figyelem, ha volt már egy b elem a-ban, és a mostani nincs, akkor a többi b elemet felesleges vizsgálni, mert már nem befolyásolja az eredmény, ugyanis van legalább 1 ami benne van, és 1 ami nincs
Biztos, hogy a lista a megfelelő adatszerkezet?
Nem lenne jobb a halmaz, hiszen eleve a halmaz szót használod már a kérdésben is.
Köszönöm a válaszokat, mivel gyorsan kellett egy megoldás, így most az #1-#2-ben leírt módon csináltam.
Halmazokkal még nem igazán dolgoztam, úgy tűnik itt valóban hatékonyabb lenne, lehet át fogom írni, egyszerűbbnek tűnik.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!