Comparación de una colección de objetos de tipo referencia para determinar si son iguales, ignorando el orden de los elementos en la colección.
Tengo las siguientes clases de muestra:
public class Item
{
public string name { get; set; }
public double price { get; set; }
}
public class Basket
{
public Item[] items;
}
Luego hice dos instancias de Basket
, ambas conteniendo objetos Item
:
var basket1 = new Basket()
{
items = new Item[]
{
new Item() { name = "bread", price = 1.5 },
new Item() { name = "butter", price = 2 }
}
};
var basket2 = new Basket()
{
items = new Item[]
{
new Item() { name = "butter", price = 2 },
new Item() { name = "bread", price = 1.5 }
}
};
Me gustaría comparar Basket1
con Basket2
, ignorando el orden de los elementos en la cesta. Este ejemplo debería devolver True
(son iguales) cuando se comparan. ¿Cómo debo proceder?
davy.ai
Para comparar “Basket1” con “Basket2” sin tener en cuenta el orden de los elementos en la canasta, podemos usar el método “SequenceEqual” del espacio de nombres “System.Linq” en C #.
Así es como podemos usarlo:
En el código anterior, primero usamos el método “OrderBy” para ordenar los elementos en ambas canastas por sus nombres. Luego, usamos el método “SequenceEqual” para comparar las dos matrices ordenadas. El método “SequenceEqual” verifica si ambas matrices contienen los mismos elementos en el mismo orden.
Al hacerlo, podemos ignorar el orden de los elementos en la canasta y determinar si las dos instancias de “Basket” son iguales. La variable “sonIguales” sería “True” en este caso.