si el orden no importa o no puede ser duplicados, entonces tal vez:
public static class IEnumerableExtensions
{
public static bool HasSameContentsAs<T>(this ICollection<T> source,
ICollection<T> other)
{
if (source.Count != other.Count)
{
return false;
}
var s = source
.GroupBy(x => x)
.ToDictionary(x => x.Key, x => x.Count());
var o = other
.GroupBy(x => x)
.ToDictionary(x => x.Key, x => x.Count());
int count;
return s.Count == o.Count &&
s.All(x => o.TryGetValue(x.Key, out count) &&
count == x.Value);
}
}
de uso:
string[] a = { "a", "b", "c" };
string[] b = { "c", "a", "b" };
bool containSame = a.HasSameContentsAs(b);
algunos casos de uso:
diferente longitudes (espera falso)
string[] a = { "a", "b", "c" };
string[] b = { "b", "c" };
orden diferente (esperar cierto)
string[] a = { "a", "b", "c" };
string[] b = { "b", "c", "a" };
también funciona si las entradas pueden contener elementos duplicados, aunque no está claro a partir de la cuestión de si se desea o no esa característica , tenga en cuenta:
elementos duplicados tienen la misma cuenta (esperar cierto)
string[] a = { "a", "b", "b", "c" };
string[] b = { "a", "b", "c", "b" };
elementos duplicados con diferentes cantidades de esperar (falsa)
string[] a = { "a", "b", "b", "b", "c" };
string[] b = { "a", "b", "c", "b", "c" };
de x en una de y en b donde x == y seleccione x == y pero no puede corregir ... no almacenar en una variable booleana –
¿Cada matriz tiene valores únicos? ¿Cuándo considera que dos matrices son iguales? si tienen los mismos elementos? los mismos elementos en el mismo orden? –
¿Está buscando una respuesta de bool única si las dos son exactamente iguales o está buscando un cheque para ver si cada elemento es igual que su compañero. –