ejemplo - string.equals c#
C#comparando dos matrices de cuerdas (5)
Intenta usar Enumerable.SequenceEqual :
var equal = Enumerable.SequenceEqual(a, b);
Ok, entonces esta puede ser una pregunta básica, pero agradecería una respuesta.
Digamos que tenemos 5 matrices de cuerdas como tal:
string[] a = {"The","Big", "Ant"};
string[] b = {"Big","Ant","Ran"};
string[] c = {"The","Big","Ant"};
string[] d = {"No","Ants","Here"};
string[] e = {"The", "Big", "Ant", "Ran", "Too", "Far"};
¿Existe un método para comparar estas cadenas entre sí sin recorrerlas en C # de forma tal que solo a y c producirían el booleano verdadero? En otras palabras, todos los elementos deben ser iguales y la matriz debe ser del mismo tamaño. Nuevamente, sin usar un bucle si es posible. ¡Gracias por adelantado!
Puedes usar Linq:
bool areEqual = a.SequenceEqual(b);
Si quiere compararlos todos de una vez:
string[] a = { "The", "Big", "Ant" };
string[] b = { "Big", "Ant", "Ran" };
string[] c = { "The", "Big", "Ant" };
string[] d = { "No", "Ants", "Here" };
string[] e = { "The", "Big", "Ant", "Ran", "Too", "Far" };
// Add the strings to an IEnumerable (just used List<T> here)
var strings = new List<string[]> { a, b, c, d, e };
// Find all string arrays which match the sequence in a list of string arrays
// that doesn''t contain the original string array (by ref)
var eq = strings.Where(toCheck =>
strings.Where(x => x != toCheck)
.Any(y => y.SequenceEqual(toCheck))
);
Devuelve ambas coincidencias (probablemente podría expandir esto para excluir ítems que ya coinciden, supongo)
si desea obtener datos de matriz que difieren de otra matriz, puede intentarlo. Salvo
string[] array1 = { "aa", "bb", "cc" };
string[] array2 = { "aa" };
string[] DifferArray = array1.Except(array2).ToArray();
Salida: {"bb", "cc"}
if (a.Length == d.Length)
{
var result = a.Except(d).ToArray();
if (result.Count() == 0)
{
Console.WriteLine("OK");
}
else
{
Console.WriteLine("NO");
}
}
else
{
Console.WriteLine("NO");
}