Wiem, że LINQ ma metodę SequenceEquals
. Ta metoda zapewnia, że każda wartość elementu w każdym kolekcji jest zgodna w tej samej kolejności.Czy istnieje metoda równoważna LINQ?
To, czego szukam, to bardziej "równoważny" typ funkcji. Tylko, że obie sekwencje zawierają te same elementy, niekoniecznie w tej samej kolejności.
Na przykład nUnit ma CollectionAssert.AreEqual()
i CollectionAssert.AreEquivalent()
, które robią to, co wyjaśniam.
wiem, że mogę to zrobić poprzez:
- zamawiania list z wyprzedzeniem i przy użyciu
SequenceEquals
- Korzystanie
Intersect
, a następnie zobaczyć, czy przecięcie jest równe oryginalnej kolejności.
Przykład:
var source = new[] {5, 6, 7};
source.Intersect(new[] {5, 7, 6}).Count() == source.Length;
Jest pomyłka w przykładzie odpowiedź. Musisz porównać to z obydwoma liczbami, w przeciwnym razie twoja funkcja zwróci wartość "prawda", gdy źródło jest podzbiorem celu. To znaczy. źródło {5,6} i cel {5,7,6} – cellik