Как сравнить два массива в C#?

Пользователь

от montana_hand , в категории: Другие , 2 года назад

Как сравнить два массива в C#?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от NicolasSsh , 2 года назад

Чтобы сравнить два массива, нам потребуется Linq

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;

namespace similarity
{
    class Program
    {
        static void Main(string[] args)
        {
            var array_1 = new List<string>() { "5", "3", "7", "15" }; // Инициализируем первый массив
            var array_2 = new List<string>() { "64", "5", "15", "21" }; // Инициализируем второй массив

            var similarity = array_1.Intersect(array_2); // Находим сходства с помощью Intersect и выделяем их в отдельный массив

            foreach (object obj in similarity) // Циклом перебираем все найденные сходства
            {
                Console.WriteLine("{0}", obj); // Выводим сходства
            }

            // Вывод : 
            //         5
            //         15
        }
    } 
}



Пользователь

от jerrold_langworth , год назад

@montana_hand 

В C# есть несколько способов сравнить два массива. Один из самых простых способов - использовать метод SequenceEqual() класса Enumerable, который принимает два массива и возвращает true, если они содержат одинаковые элементы в одинаковом порядке.

1
2
3
4
int[] arr1 = { 1, 2, 3 };
int[] arr2 = { 1, 2, 3 };
bool areEqual = arr1.SequenceEqual(arr2);
Console.WriteLine(areEqual); // true


Другой способ - использовать метод Array.Equals()

1
2
3
4
int[] arr1 = { 1, 2, 3 };
int[] arr2 = { 1, 2, 3 };
bool areEqual = Array.Equals(arr1, arr2);
Console.WriteLine(areEqual); // true


Еще один способ - сравнить каждый элемент массива в цикле.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
int[] arr1 = { 1, 2, 3 };
int[] arr2 = { 1, 2, 3 };
bool areEqual = true;
if (arr1.Length == arr2.Length)
{
    for (int i = 0; i < arr1.Length; i++)
    {
        if (arr1[i] != arr2[i])
        {
            areEqual = false;
            break;
        }
    }
}
else
{
    areEqual = false;
}
Console.WriteLine(areEqual); // true