SequenceEqual
tornerà vero solo se due condizioni o incontrato.
- Contengono gli stessi elementi.
- Gli elementi sono nello stesso ordine.
Se solo si desidera controllare se contengono gli stessi elementi indipendentemente dal loro ordine e il problema è del tipo
Does values2 contenere tutti i valori contenuti nella values1?
è possibile utilizzare LINQ metodo di estensione Enumerable.Except
e quindi verificare se il risultato ha un valore. Ecco un esempio
int[] values1 = { 1, 2, 3, 4 };
int[] values2 = { 1, 2, 5 };
var result = values1.Except(values2);
if(result.Count()==0)
{
//They are the same
}
else
{
//They are different
}
E anche utilizzando questo si ottiene automaticamente gli elementi diversi. Due piccioni con una fava.
tenere a mente, se si esegue il codice come questo
var result = values2.Except(values1);
si ottengono risultati diversi.
Nel mio caso, ho una copia locale di un array e voglio controllare se qualcosa è stato rimosso dall'array originale, quindi utilizzo questo metodo.
fonte
2016-02-12 07:00:17
Aggiunto '.net' ai tag perché questa tecnica potrebbe essere noi ed in altre lingue basate su .net simili. –
Per chiunque stia leggendo questo, tenere presente che la risposta accettata sta usando SequenceEqual. SequenceEqual non solo controlla se contengono gli stessi dati, ma anche se contengono gli stessi dati nello stesso ordine –