Sé que LINQ tiene un método SequenceEquals
. Este método asegura que el valor de cada artículo en cada colección coincida, en el mismo orden.¿Hay un método equivalente LINQ?
Lo que estoy buscando es un tipo más de funcionalidad "Equivalente". Solo que ambas secuencias contienen los mismos elementos, no necesariamente en el mismo orden. Por ejemplo, nUnit tiene CollectionAssert.AreEqual()
y CollectionAssert.AreEquivalent()
que hacen lo que estoy explicando.
Sé que puedo hacer esto ya sea por:
- ordenar las listas antes de tiempo y utilizando
SequenceEquals
- Usando
Intersect
, luego ver si la intersección es igual a la secuencia original.
Ejemplo:
var source = new[] {5, 6, 7};
source.Intersect(new[] {5, 7, 6}).Count() == source.Length;
Hay un error en el ejemplo de respuesta. Debe compararlo con ambos conteos, de lo contrario su función devolvería 'verdadera' cuando la fuente es un subconjunto del objetivo. Es decir. fuente {5,6} y destino {5,7,6} – cellik