So che LINQ ha un metodo SequenceEquals
. Questo metodo si assicura che ogni valore dell'oggetto in ciascuna raccolta corrisponda, nello stesso ordine.Esiste un metodo equivalente LINQ?
Quello che sto cercando è un tipo di funzionalità più "Equivalente". Solo che entrambe le sequenze contengono gli stessi elementi, non necessariamente nello stesso ordine.
Ad esempio, nUnit ha CollectionAssert.AreEqual()
e CollectionAssert.AreEquivalent()
che fa ciò che sto spiegando.
So che posso fare questo mediante:
- per l'ordine delle liste in anticipo e utilizzare
SequenceEquals
- Utilizzando
Intersect
, poi vedere se l'intersezione è uguale alla sequenza originale.
Esempio:
var source = new[] {5, 6, 7};
source.Intersect(new[] {5, 7, 6}).Count() == source.Length;
C'è un errore nell'esempio di risposta. Devi confrontarlo con entrambi i conteggi altrimenti la tua funzione restituirebbe 'true' quando la fonte è un sottoinsieme di target. Cioè la fonte {5,6} e il target {5,7,6} – cellik