Сопоставьте элементы между двумя коллекциями с 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?
Спасибо!
Ответы
Ответ 1
Да, пересечь - пример кода для иллюстрации.
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);
}
Ответ 2
Если вы хотите выполнить произвольный код по совпадениям, это будет способ 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);
}