Сравнить 2 стринговых массива

Рейтинг: 0Ответов: 3Опубликовано: 18.03.2015

Нигде не могу найти хорошего описания того, как сравнить 2 массива. Я представляю примерно такой код, как ниже, но результат все время получается не тот, что требуется (еще и кучу др. вариантов перепробовал).

Т.е. в результате в List<string>keywords должны быть записаны элементы, которые содержатся в обоих массивах.

                for (int i = 0; i < array1.Length; i++)
            {
                for (int j = 0; j < array2.Length; j++)
                {
                    if (array1[i] == array2[j]) 
                    { 
                    keywords.Add(array2[j]);
                    }
                }
            }

Ответы

▲ 5Принят
List<string> keywords = array1.Where(t => array2.Contains(t)).ToList<string>();
▲ 3
using System;
using System.Linq;

namespace Intersect
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] array1 = { "John", "Mary", "Xavier" };
            string[] array2 = { "Mary", "Nick", "John" };
            foreach (string i in array1.Intersect(array2))
            {
                Console.WriteLine(i);
            }
        }
    }
}
▲ 1

У String есть метод Equal, попробуй использовать его в проверке на равенство. Можешь также воспользоваться LINQ

var ar = array1.Where(x => array2.Any(y => y.Equals(x)).ToArray();

Так ты сразу получишь массив-результат, содержащий общие, между array1 и array2, элементы