Witam.
Jak zrobić żeby program porównywał dwie tablice/pliki txt ze sobą, a następnie usuwał takie same elementy jakie są w tablicy 2 z tablicy 1?
Mam nadzieję że wiecie o co mi chodzi :)
Witam.
Jak zrobić żeby program porównywał dwie tablice/pliki txt ze sobą, a następnie usuwał takie same elementy jakie są w tablicy 2 z tablicy 1?
Mam nadzieję że wiecie o co mi chodzi :)
Cholibka, nie rozumiem może pokażesz kod który do tej pory napisałeś i w czym problem może ktoś zrozumie co chcesz osiągnąć...
A tak na serio to dwie pętle iterujesz po elementach pierwszej tablicy i dla każdego elementu sprawdzasz czy istnieje w drugiej tablicy, jak jest to usuwasz jak nie ma to nie usuwasz.
kurczę, trudno to wytłumaczyć :D
Może tak:
Wczytuję sobie pliki do array'a -
string[] Jeden= System.IO.File.ReadAllLines(@"Jeden.txt");
string[] Dwa= System.IO.File.ReadAllLines(@"Dwa.txt");
W tablicy "Jeden" mam:
aa
bb
cc
A w tablicy "Dwa":
xx
aa
yy
I teraz chciałbym żeby z tablicy "Dwa" usunęło mi "aa"
string[] wynik = dwa.Except(jeden).ToArray();
Z Except trzeba uważać, bo on nie tylko usunie elementy ze zbioru 1, które znajdują się w zbiorze 2, ale dodatkowo zrobi distinct na zbiorze 1. Najłatwiej będzie to zaprezentować na przykładzie.
var one = new[]
{
"aaa",
"bbb",
"ccc"
};
var two = new[]
{
"ddd",
"eee",
"aaa",
"eee"
};
var result = two.Except(one).ToArray();
Wg mnie spodziewanym wynikiem powinna być tablica ["ddd", "eee", "eee"], zaś będzie ["ddd", "eee"].
O borze. :|
Nie ma żadnego distinct
. Except zwraca zbiór, a zbiór z definicji nie może zawierać dwóch takich samych elementów.
Zawsze można napisać:
two.Where(x => !one.Contains(x)).ToArray();