Сопоставьте элементы между двумя коллекциями с Linq в С#

У меня вопрос о том, как выполнить общую задачу программирования в linq.

позволяет сказать, что у нас есть разные коллекции или массивы. То, что я хотел бы сделать, это совместить элементы между массивами и, если есть совпадение, сделать что-то с этим элементом.

например:

        string[] collection1 = new string[] { "1", "7", "4" };
        string[] collection2 = new string[] { "6", "1", "7" };

        foreach (string str1 in collection1)
        {
            foreach (string str2 in collection2)
            {
                if (str1 == str2)
                {
                    // DO SOMETHING EXCITING///
                }
            }
        }

Это, очевидно, может быть выполнено с использованием кода выше, но что мне интересно, есть ли быстрый и аккуратный способ, которым вы можете это сделать с LinqtoObjects?

Спасибо!

19
25 янв. '10 в 5:03
источник поделиться
2 ответов

Да, пересечь - пример кода для иллюстрации.

string[] collection1 = new string[] { "1", "7", "4" };
string[] collection2 = new string[] { "6", "1", "7" };

var resultSet = collection1.Intersect<string>(collection2);

foreach (string s in resultSet)
{
    Console.WriteLine(s);
}
26
25 янв. '10 в 5:11
источник

Если вы хотите выполнить произвольный код по совпадениям, это будет способ LINQ-y.

var query = 
   from str1 in collection1 
   join str2 in collection2 on str1 equals str2
   select str1;

foreach (var item in query)
{
     // do something fun
     Console.WriteLine(item);
}
11
25 янв. '10 в 5:11
источник

Посмотрите другие вопросы по меткам или Задайте вопрос